DirectMusic Producer

Microsoft® DirectMusic® Producer enables you to create audio files for applications that use the Microsoft® DirectMusic® application programming interface (API).

The following is a summary of the topics included in this documentation:

  • Overview

    Gives a brief overview of Microsoft DirectMusic and Microsoft DirectMusic Producer, presents common usage scenarios that give you an idea of what kinds of things you can do with DirectMusic Producer, points you to more specific information on how to put the power of DirectMusic Producer to work, and introduces some of the important terms you will encounter as you work with the application.

  • Quick Start

    Guides you step by step through some basic tasks of content creation. You'll learn a little about segments, styles, and variations, and a lot about using the DirectMusic Producer interface.

  • Sample Files

    Introduces the many sample files included with the application. Browsing through these files is a great way to learn about the capabilities of DirectMusic Producer.

  • Project Workspace

    Describes the use of menus, toolbars, properties windows, the project tree, and the editing window. Also explains the different component types you can create, how to manage your files, and how to customize the DirectMusic Producer workspace.

  • Project Management

    Explains how to create a project, add components to it, and save components as new files.

  • Playback and Recording

    Describes playback setup, including playback using MIDI devices and downloadable sounds (DLS). Provides information about capturing input from MIDI devices and recording performances into files. Also provides important information about designing and playing transitions from one component to another.

  • Creating Content

    Describes in detail how to create segments, bands, styles, DLS collections, chordmaps, audiopaths, toolgraphs, scripts, and other components.

  • Delivering Content

    Explains how to deliver your DirectMusic Producer files to application developers.

  • Tips

    Provides information about keyboard shortcuts and drag-and-drop features.

More information on DirectMusic and DirectMusic Producer can be found at the DirectX Developer Center .

© 2000-2001 Microsoft Corporation. All rights reserved.


What's New in This Release

This release of Microsoft® DirectMusic® Producer introduces many performance enhancements as well as new features, which allow you to:

  • Sort components in the project tree by name, type, and file size. Right-click on a project and click Sort Tree on the shortcut menu.
  • Import wave files directly into new segments. See Importing a Wave File as a Segment.
  • Create stereo regions in DLS Designer more easily. See Stereo Waves.
  • Attain low-latency playback of MIDI input for easier creation of musical content in real time.
  • Edit segment length in clock time.
  • Obtain direct instrument assignment and access to Band Editor from parts in Pattern Editor, the Sequence Track, and the Pattern Track.
  • Customize shading in track displays, and customize wallpaper in the Editing Window. See Customizing the Workspace.

In addition, this Help has been thoroughly revised.


Overview

This section provides a brief introduction to the capabilities of Microsoft® DirectMusic® and Microsoft® DirectMusic® Producer. Information is organized into the following topics:

  • What Is DirectMusic?
  • The Power of DirectMusic Producer
  • How DirectMusic and DirectMusic Producer Work Together


What Is DirectMusic?

DirectMusic is a part of Microsoft DirectX, a set of components installed in the Microsoft Windows operating system to provide fast and full-featured support for graphics, input, network play, and sound. In combination with Microsoft DirectSound, DirectMusic provides a complete solution for playing music and sound effects in games and other applications. DirectMusic Producer makes use of DirectMusic to load and play sounds. Any application using DirectMusic Producer content files must use the DirectMusic application programming interface (API) to load and play those files.

As well as loading and playing fully authored sound files, a DirectMusic application is able to compose music at run time using elements created in DirectMusic Producer. It can also introduce variations in the way sounds are played, add effects, and place sounds in 3-D space.

When creating content for a DirectMusic application, work closely with the developers of that application. DirectMusic and DirectMusic Producer are designed to work together, and they share some functionality; that is, some behaviors of the sound files can be controlled either at composition time in DirectMusic Producer, or at run time by the DirectMusic application.


The Power of DirectMusic Producer

DirectMusic Producer is an authoring tool used to create music and other sounds for computer games and other applications.

You can use DirectMusic Producer in a number of ways, ranging from quickly setting up the playback of an existing MIDI file to creating a wholly new piece of music or sound effect. You can also use DirectMusic Producer to create a complete performance of music and sound effects that follows your settings for timing, length, start and stop times, instrument use, and other parameters.

The following are some of the capabilities of DirectMusic Producer:

Importing and Creating Audio Data

Audio data in a DirectMusic Producer segment can come from several different sources. You can obtain data in the following ways:

  • Import existing MIDI files.
  • Capture data from MIDI devices.
  • Compose musical patterns by using a graphical editor.
  • Import wave files, including compressed wave files in any format supported by the Windows audio compression manager (ACM). DirectMusic Producer does not support wave recording.

Variability

DirectMusic Producer gives you many options for incorporating variability into soundtracks. As a piece plays, there are multiple possible paths it can follow, including different chord choices, alternative melodies or sound effects, changes in rhythm, and increased or decreased intensity.

Interactivity

You can use DirectMusic Producer to design soundtracks that are linked to events or states in an application.

For example, the appearance of a villain in a CD-ROM game might be accompanied by a particular musical theme; the musical patterns in the theme could vary depending on the circumstance, such as a game character being in peril.

As another example, a multimedia CD-ROM about international travel could have a different style of music accompany each region or city, with smooth transitions from one style to another as the user explores. In addition, each mouse click could have a special sound effect or motif dedicated to it.

Unified and Exact Timing

All sounds are on a single timeline, no matter how many files you combine. Timing is very precise. You can cue sounds to occur at a given clock time, or at the nearest appropriate boundary such as at the beginning of a measure.

Complete Control over Instrumentation

DirectMusic Producer files support the Downloadable Sounds (DLS) Level 2 standard. You can make use of the power of DLS to ensure that instruments sound exactly the same on every playback system.

DLS frees you from the limitations of MIDI hardware. You are no longer restricted to a fixed set of timbres. An instrument can play any sound, even a nonmusical sound effect.

Scripting

Using DirectMusic Producer scripts, you can have more immediate control over the performance of sound in an application. Changes in a script take immediate effect, without the necessity of recompiling the application.


How DirectMusic and DirectMusic Producer Work Together

Applications that use the DirectMusic application programming interface (API) are not restricted to playing content from DirectMusic Producer. They can play wave and MIDI files, and can construct music and sound effects by playing individual notes on available DLS instruments. However, the full power of DirectMusic can be unleashed only with files authored in DirectMusic Producer.

Using DirectMusic Producer content, an application can:

  • Play music or sound effects with automatic variations, ranging from subtle changes in the timing to different patterns of notes.
  • Change the choice of patterns in the soundtrack by setting a value called the groove level.
  • Synchronize different pieces of music on rhythmic boundaries.
  • Synchronize other events in the application with the rhythm; for example, display graphics in time with music.
  • Compose a musical piece at run time, based on note and chord patterns authored in DirectMusic Producer.
  • Compose smooth transitions between pieces of music at run time, even when the current piece is interrupted.
  • Play different musical parts on different audiopaths, so that different effects and 3-D positioning can be applied to different band instruments or other sounds within a single file.
  • Use scripts to give the sound designer more immediate control over the soundtrack.

The main type of file used by most DirectMusic applications is the segment. A segment is a self-contained unit that can be loaded and played with just a few simple commands. It may also contain short sounds called motifs that can be played separately.

In the context of a DirectMusic application, there are two types of segment: primary and secondary. One segment is played as the primary segment, and any number of segments can be played along with it as secondary segments. One segment, usually the primary segment, is designated as the controlling segment, and controls global parameters such as tempo and chords.

Note The DirectMusic application is responsible for specifying whether a segment is played as the primary segment or as a secondary segment, regardless of the segment's role within the DirectMusic Producer environment.

Playing authored segments is the most common scenario in a DirectMusic application, but DirectMusic also has composition capabilities which enable an application to construct segments at run time from supplied style and chordmap files. Applications can also make use of DLS collections, bands, and audiopaths that you create in DirectMusic Producer.

See Also

  • Delivering Content
  • Primary and Secondary Segments


Scenarios

DirectMusic Producer has many capabilities, and some may be more relevant than others to what you want to accomplish. This section introduces some possible development scenarios to help you focus on the parts of the application that best meet your needs.

Each scenario presents a broad overview of the kind of content you might want to create, introduces key concepts, and points to detailed information about how to create and edit the necessary components.

The following scenarios are described:

  • Simple Soundtracks
  • Responsive and Variable Music
  • Custom Instruments
  • Nonrepetitive Soundscapes
  • Sound Effects
  • Scripted Soundtracks
  • Preconfigured Playback


Simple Soundtracks

In this scenario, you want to create a soundtrack based on existing content in the form of wave or MIDI files. The application does not require close interaction between the soundtrack and other other events, and the sounds are exactly the same each time they are played. Examples include background music, narration, or dialog in cut scenes.

You create segment files by importing the existing content or by recording and editing MIDI sequences within DirectMusic Producer. Multiple source files can be combined in a single segment, and sounds can overlap. You control the timing of the sounds within each segment, so there is little for the application developer to do other than starting playback of the segment at the appropriate time.

When implementing this scenario, consider the following:

  • For the simplest playback scenarios, such as looping background music, you don't need to supply DirectMusic Producer segment files. DirectMusic applications can play ordinary MIDI and wave files on standard audiopaths, and can apply effects such as reverberation.
  • By importing MIDI files into DirectMusic Producer segments, you can use existing content while adding value from features such as custom DLS collections, band changes, and nonstandard audiopaths.
  • You can also record sequences from a MIDI device, edit existing MIDI sequences, and create new sequences by entering notes in an editing window.
  • By importing multiple waves into a DirectMusic Producer segment, you can easily create a sequence of sounds with precise timing. You could do this, for example, to construct a dialog sequence from recordings of individual lines.

Concepts

  • Audiopaths
  • Effects
  • Segments
  • Synthesis and Downloadable Sounds
  • Tracks

How-to

  • Importing a MIDI File as a Segment
  • Importing a Wave File as a Segment
  • Note Entry and Editing
  • Segment Designer
  • Sequence Track
  • Quick Start
  • Wave Track


Responsive and Variable Music

In this scenario, rather than supplying fixed music based on waves or MIDI sequences, you want to create a musical soundtrack that can respond to application events and play with variations. This type of music is sometimes called interactive.

Examples of responsiveness and variability in a DirectMusic performance include the following:

  • Different patterns of notes are selected each time the piece is played. The application can influence the selection of patterns by setting a value called the groove level.
  • A chord progression alters the notes as patterns are repeated.
  • Variations occur each time a pattern is played.
  • Information about the rhythm is available to the application, which can synchronize other events with measures and beats.
  • Short motifs contained within a style are played on demand. For example, events in a game can each be marked by a short musical phrase.
  • When the application replaces the currently playing segment with another one, a smooth transition is composed and played.

To make your musical segments fully responsive and variable, you must base them on styles. Styles contain musical patterns, which, unlike MIDI sequences, are not made up of fixed notes but rather are made up of musical values that become notes when a chord is applied. Style-based segments also contain motifs, short patterns that can be played on demand by applications.

When implementing this scenario, consider the following:

  • You can base a style on existing MIDI content or create your own patterns.
  • DirectMusic Producer enables you to construct collections of related chords called chordmaps, which you can then use to generate a variety of chord progressions. Chordmaps can also be used at run time to change the chords in a segment each time it plays, thus creating even greater variety.
  • As the segment author, you have a great deal of control over which variations can play in different circumstances. For example, a variation can be designed to play only as an introduction or ending, only with certain chords, or only at certain groove levels.

Concepts

  • Chords and Chordmaps
  • Styles
  • Variability

How-to

  • Chord Track
  • Chordmap Designer
  • Pattern Editor
  • Pattern Track
  • Style Track
  • Style Designer


Custom Instruments

In this scenario, you want your music to be played on instruments not present in the standard set distributed with DirectMusic. You might even want to play nonmusical sound effects as notes. The support for the Downloadable Sounds standard offered by DirectMusic and DirectMusic Producer enables you to do this. You can create custom instruments and put them in collections for distribution with your content files. When the content is played using your DLS collection, it will sound the same on all systems.

When implementing this scenario, consider the following:

  • DirectMusic applications always have access to the instruments in the GM/GS® Sound Set, which is licensed from Roland Corporation. This set, contained in GM.dls, includes many musical instruments and simple sound effects.
  • An instrument can be based on any sound, not just a musical timbre. You can alter the pitch just as with a musical instrument. For example, you could create an instrument from an engine sound and play different notes to represent different engine speeds.
  • Use regions and layers within instruments to trigger different sounds according to the pitch and velocity being played.
  • Instrument sounds are not intrinsic to a segment. It is the responsibility of the application developer to ensure that the DLS instruments are available on the synthesizer. Instruments are assigned to performance channels by a band, which might be activated either by a band track in the segment or by the application.

Concepts

  • Bands
  • Performance Channels
  • Synthesis and Downloadable Sounds

How-to

  • Band Editor
  • DLS Designer


Nonrepetitive Soundscapes

In this scenario, you create soundscapes, or textures of background sounds, that differ each time they are played or looped.

For example, suppose you want to create a soundtrack for a battle scene in which many soldiers are fighting hand-to-hand. Although you might want to play particular sounds to reflect important events, the whole battle is played out against a background of shouts, clashing weapons, neighing horses, and so on. Using a simple wave file, the application plays exactly the same sounds over and over again. This repetition is easily recognized by the user, and the illusion of reality is lost. You want the individual sounds to be played more chaotically.

By composing DirectMusic Producer segments that contain variations in pattern tracks or wave tracks, you create a soundscape that automatically varies when played. Each time a segment is played or looped, DirectMusic selects a variation number for each wave track part and each pattern track part, and plays only the waves or notes that you have marked as valid for that variation number. The result is a very large number of possible combinations of sounds. The soundtrack, rather than being repetitive and predictable, becomes much more random and realistic.

When implementing this scenario, consider the following:

  • In a style-based segment, you can create note patterns and use DLS instrument regions to play different sound effects for different notes. Alternatively, you can use a wave track.
  • A wave or note in a part can be assigned to any number of variations up to 32. The more variations you assign the sound to, the more often it will be played.
  • Use multiple parts or multiple tracks to increase the amount of variability. One part has only 32 possible variations, but three parts can be played together in 32,768 different ways.
  • Use groove levels to enable the application to vary the overall effect of the soundtrack. For example, the battle could increase in intensity, resulting in a choice of patterns containing louder or more frequent sounds.
  • It is also possible to manipulate combinations of sounds by using variations. For example, the sound of a weapon strike occurs at a certain point in variations 1 to 10; a cry of pain occurs immediately after, but it is only valid for variations 1 to 3. The result is that a cry can occur only after a weapon strike, but not every weapon strike is followed by a cry.
  • You can control how variation numbers are selected at run time. For example, they can be chosen completely at random, randomly but without repeating until all have been played, or in sequence.
  • You can lock variations in one track to variations in another, so that, for example, a certain wave is always played when a certain musical variation is selected.

Concepts

  • Segments
  • Tracks
  • Variability
  • Synthesis and Downloadable Sounds

How-to

  • DLS Designer
  • Groove Ranges
  • Pattern Editor
  • Wave Editor
  • Wave Track


Sound Effects

In this scenario, you want to provide nonmusical sounds that can be played on demand to reflect actions in a game or other application. Such sounds could range from short sound effects to longer pieces of dialog.

Several techniques are available for creating sound effects by using DirectMusic Producer:

  • Compose wave-based segments for individual sounds. By using variations, you can create more realistic effects that do not always sound exactly the same.
  • Create custom DLS instruments. Applications can then trigger sound effects by playing notes, and can change the timbre of the sound by altering the pitch and velocity of the notes.
  • Combine custom DLS instruments with style-based segments. The style contains different patterns for different ranges of groove level. Each pattern might contain only a single note in a single part, mapped to one instrument containing a sound effect. The application triggers appropriate sounds by setting a groove level and playing the segment. This approach could be used, for example, to play crowd noises varying from groans to wild applause.

When implementing this scenario, consider the following:

  • If the timing of sound effects is critical and the application requires the least possible delay between triggering a sound effect and hearing it, application developers should consider playing wave files directly through DirectSound buffers rather than using DirectMusic Producer content.
  • DLS samples can be one-shot or looping. Use looping samples for continuous effects such as engine sounds.
  • You can use DLS Designer to save sound effects in compressed formats, achieving a dramatic reduction in the storage required for waves.
  • Another advantage of using DLS for sound effects is that articulation or envelope effects are automatically applied when the sound is played. For example, a crowd noise can have attack and fade.
  • If the application is using 3-D sounds, each part within a segment should be assigned to its own mix group so that it plays through a unique 3-D buffer. The application can then place sound sources individually.
  • Use environmental reverberation to make sound effects more realistic. You can attach this effect to an audiopath, or it can be applied by the application.

Concepts

  • Audiopaths
  • Effects
  • Segments
  • Styles
  • Synthesis and Downloadable Sounds

How-to

  • Audiopath Designer
  • DLS Designer
  • Segment Designer
  • Wave Track


Scripted Soundtracks

This scenario can be considered in combination with any of the other scenarios where you are providing sounds for use in a particular application such as a game. As the sound designer, you want to have greater control over the application development process. You don't want to have to rely on others to implement requested changes in the way sounds are used, or to wait for the application to be recompiled before hearing the results. You want to be able to make changes and test them immediately.

DirectMusic scripts are the means of gaining this control. Using simple text commands, you write routines that are called from within the application. The routines control many aspects of the performance. When you want to make a change, you simply change the routine; no alteration in the application code is necessary.

When implementing this scenario, consider the following:

  • Script routines can create audiopaths from configurations, load and play segments, and set and retrieve some performance parameters.
  • Scripting is a form of programming. Although the DirectMusic scripting language is much simpler than Visual Basic or C++, and even somewhat simpler than VBScript, you do need some programming skills.
  • Scripts have to be edited in DirectMusic Producer, because they contain data other than plain text and are saved in a special format for loading by DirectMusic applications.

Concepts

  • Scripts

How-to

  • Script Designer


Preconfigured Playback

In this scenario, you want to supply application developers not only with sound files but also with a complete playback configuration. This configuration might include 3-D capabilities or effects such as chorus, echo, and reverberation.

DirectMusic Producer enables you to specify the configuration of DirectSound buffers and DirectX Media Objects (DMOs) that process the sounds after they leave the synthesizer. This audiopath configuration can be included in the segment file or distributed separately. In addition, by inserting a toolgraph in a segment, you make tools available that can intercept performance messages before they reach the synthesizer. Tools can alter the content of messages or respond in other ways.

When implementing this scenario, consider the following:

  • DirectMusic applications can create standard audiopaths and insert toolgraphs in a performance without benefit of a supplied configuration. By supplying a configuration with your content, however, you ensure that the sounds are played back the way you want. In addition, you can implement specialized configurations that cannot be created by using only the DirectMusic API.
  • No standard tools are supplied with DirectMusic Producer or the DirectMusic SDK. When distributing a toolgraph, distribute the tool DLLs as well.
  • Several standard DMOs are installed as part of DirectMusic. In addition, others may be registered on your system. Be sure that any DMOs you use in your content files, other than the standard DirectMusic DMOs, are installed on the user's system.

Concepts

  • Audiopaths
  • Effects
  • Tools

How-to

  • Audiopath Designer
  • Toolgraph Designer


Concepts

This section introduces the key concepts behind the creation and use of DirectMusic Producer files. The following topics are discussed:

  • Performance
  • Segments
  • Tracks
  • Styles
  • Patterns
  • Chords and Chordmaps
  • Audiopaths
  • Performance Channels
  • Synthesis and Downloadable Sounds
  • Bands
  • Tools
  • Effects
  • Scripts
  • Variability


Performance

The performance is an object that manages all sound playback in a DirectMusic application. The performance is responsible for cueing segments, calling on segments to generate their data at the appropriate time, and mapping instruments to the synthesizer. It also controls global values such as timing, tempo, and master volume. Most applications have a single performance object, but it is possible to have more than one performance with different parameters.

You do not work directly with performances when creating content, but the performance concept underlies some key elements of DirectMusic Producer. For example, you assign performance channels, also called PChannels, to musical parts so that at run time these parts are correctly routed through the performance, play on the appropriate instruments, and are sent to the right output buffers.

Related concepts

  • Performance Channels
  • Segments


Segments

A segment is a largely self-contained unit of playable sound. Sound data in segments falls into three main categories:

  • Sequences of notes and MIDI commands.
  • Patterns of musical values that are converted to MIDI notes at run time according to a chord progression.
  • Samples based on one or more wave files.

Data of all three types can be combined in a single segment.

In addition to the primary sound data—MIDI notes, musical values, or waves—segments usually contain other timed data such as band, chord, and tempo changes. Data of different kinds is stored in different tracks.

A segment contains sequential data and can be played from beginning to end. However, the same sounds are not necessarily heard each time the segment is played, because different patterns and variations might be selected for playback.

In a performance, one segment is the primary segment, and normally controls parameters such as the tempo and current chord. Other segments are played as secondary segments.

When one primary segment is replaced by another, a transition occurs. You have a great deal of control over the timing and composition of transitions.

Related concepts

  • Chords and Chordmaps
  • Styles
  • Tracks
  • Variability

More information

  • Primary and Secondary Segments
  • Segment Designer
  • Transitions


Tracks

All timed data within a segment is organized into tracks. Examples of data contained in tracks include musical patterns, chords, lyrics, band changes, tempo changes, and MIDI commands. Each of these data types has its own track type. Certain nontimed data is also contained in tracks; for example, a single chordmap can be stored in the chordmap track of a segment that composes its own chords.

Multiple tracks of one type can exist in a segment. For example, a segment could have two MIDI sequence tracks, each associated with its own band track.

During playback, tracks contribute their data to the performance either by generating messages or by responding to requests from other tracks.

Related concepts

  • Segments

More information

  • Segment Tracks
  • Track Groups


Styles

Styles are building blocks containing basic information that can be used to create many different pieces of music based on common rhythmic and melodic ideas. Style-based segments can vary greatly during playback and can respond subtly to program events.

Data in a style can include tempo, a time signature, one or more bands, and a variety of musical patterns. When a segment containing a style is played, patterns are drawn from the style and played with some degree of randomness. The selection of patterns is also determined in part by commands that can be programmed in the groove track or issued at run time by applications. Some patterns, designated as motifs, can be played explicitly by an application or script.

Related concepts

  • Chords and Chordmaps
  • Patterns
  • Segments
  • Variability

More information

  • Style Designer
  • Style Track


Patterns

Patterns consist of musical phrases in one or more instrument parts. Unlike notes in a MIDI sequence, notes in patterns can be transposed at run time according to a chord progression. They also contain variations, which are selected at run time in a specified order or with a specified degree of randomness.

Patterns reside in styles and in pattern tracks. Styles can contain many patterns, each of which has properties that determine the appropriate circumstances in which it can play. A pattern track contains a single pattern that always plays (although it could have silent variations).

Related concepts

  • Chords and Chordmaps
  • Styles
  • Segments
  • Variability

More information

  • Pattern Editor
  • Pattern Properties
  • Pattern Track


Chords and Chordmaps

A style-based segment, or one containing a pattern track, also needs a chord track so that the notes in the patterns can be transposed according to a chord progression. A chord track can be either hand-crafted or generated from a chordmap, which is a map of alternative pathways through a set of related chords. The number of distinct routes through the chordmap can be very large.

When the chord track is composed, a single route through the chordmap is selected automatically. The choice of routes is partly random and partly governed by the signpost track, which defines groups of chords that are valid at every point in the segment where the chord can change. A chord track can be composed from a chordmap either at design time within DirectMusic Producer, or at run time in a DirectMusic application.

Related concepts

  • Segments
  • Styles
  • Tracks

More information

  • Chordmap Designer
  • Chord Track
  • Chordmap Track
  • Signpost Track


Audiopaths

An audiopath specifies the route to be taken by data playing on a given set of performance channels after the data leaves the synthesizer. The audiopath consists of buses connecting the synthesizer to one or more DirectSound buffers.

The properties of the buses define the transmission of the data to the buffer or buffers. Left and right stereo buses, for example, transmit data for the left and right channels of a stereo sound. If only the left bus is used, the data for the right channel is not transmitted.

The properties of the buffers define what effects and controls are added to sounds. For example, a buffer with 3-D capabilities can be used to control the evident position in space of the sound source. Effects such as chorus and echo attached to a buffer give special characteristics to the sound.

Standard audiopaths are often created by applications that use DirectMusic Producer content, and it is not necessary for you to specify audiopaths for the segments you create. However, doing so does give you a greater measure of control over how your segments will sound. Also, DirectMusic Producer allows different groups of performance channels within a segment to be directed to different audiopaths. When an application plays a segment on a standard audiopath, all performance channels in that segment must play on the same path, making it impossible to apply effects only to certain channels, or to separate different parts in space by using multiple 3-D buffers for a single segment.

Related concepts

  • Effects
  • Performance Channels

More information

  • Audiopath Designer


Performance Channels

A performance channel, also called a PChannel, connects a part in a segment to a playback configuration. The configuration includes the following elements:

  • Tools that operate on the data before it reaches the synthesizer.
  • Instrument used to synthesize the sound, if it is not a wave.
  • Pan and volume settings.
  • Audiopath on which the sound plays.

DirectMusic Producer makes available 999 performance channels. Every part in a segment, including instrument parts and wave parts, is assigned to a performance channel. Multiple parts can be assigned to a single channel.

Related concepts

  • Audiopaths
  • Bands
  • Performance
  • Tools

More information

  • Audiopath Designer
  • Band Editor


Synthesis and Downloadable Sounds

DirectMusic Producer itself, and most applications that use DirectMusic to play content, make use of the Microsoft Synthesizer to create sounds. This synthesizer, which is a software component, accepts input in the form of messages and creates output in the form of pulse code modulation (PCM) data. The output data is then fed through a series of software buffers, where it can be further modified by effects. Finally, the data is passed to the hardware for conversion to a sound wave.

To create sounds, the synthesizer needs information about the expected timbre of those sounds. This information is in the form of samples that conform to the Downloadable Sounds (DLS) Level 2 standard, created by the MIDI Manufacturers Association. A sample might represent the timbre of a particular musical instrument at a given pitch or within a range of pitches; it might represent a non-musical sound effect; or it might even consist of a complete musical phrase.

The synthesizer can modify samples according to supplied parameters, which include pitch and articulation settings. It can also draw on different wave samples for different pitches and velocities of the notes being played.

Before a segment can be played in an application, the samples associated with the segment must be downloaded to the synthesizer. Downloading includes both DLS instrument collections and other waves included in the segment as sound effects.

Related concepts

  • Bands

More information

  • Continuous Controllers
  • DLS Designer
  • Microsoft Synthesizer


Bands

A band defines instruments and other settings on PChannels. When a band change is made in a segment, instruments are assigned to PChannels, and other properties, such as volume, pan, and transposition, are set on each PChannel in the band. These properties apply even if the PChannel is being used to play waves rather than instrument sounds.

A band is not the same as a DLS instrument collection. A DLS collection contains data about the timbre of instruments but does not include any information about the role those instruments might play in a performance. Instrument data in the DLS collection is linked to particular PChannels in a performance by a band. When a part in a segment is assigned to a particular PChannel, it plays with the instrument, volume, and pan settings applied to that PChannel by the band.

Related concepts

  • Performance Channels
  • 9Synthesis and Downloadable Sounds

More information

  • Band Track
  • Band Editor


Tools

Tools are components designed to intercept performance messages and perform a task with them based on the information contained in those messages. For example, the DirectMusic Producer environment contains a tool that intercepts lyrics messages and displays text in the Message Window as a segment containing a lyric track is played. Other tools might apply an algorithm to music values, introduce an echo or delay, or discard messages of a certain kind so that they do not reach the synthesizer. A tool can be specific to a group of performance channels or apply to all channels.

Tools are organized in toolgraphs, which can be embedded in segments. In order for the tools to be used when the segment is played in an application, they need to have been installed on the user's system.

Note Tools operate on data before it reaches the synthesizer. Although tools can be used to apply simple effects, these are not the same as effects implemented in buffers on the audiopath, which are applied to sounds after they leave the synthesizer.

Related concepts

  • Audiopaths
  • Effects

More information

  • Toolgraph Designer


Effects

Effects are modifications of sounds. They are applied to PCM data in buffers, and work by manipulating the sample values. Standard effects included with DirectMusic Producer include chorus, compressor, distortion, echo, flanger, gargle, environmental reverb, parametric equalizer, and Waves musical reverb. In addition, a file output effect can be placed on a buffer to send the data in that buffer to a file.

In addition to standard effects, you can use any other effect that has been implemented as a DirectX Media Object (DMO). The object must be installed on your development system as well as on any system where the content is played. The standard effects, other than file output, are installed as part of the DirectX run-time files and are automatically available to any application using DirectMusic.

Related concepts

  • Audiopaths
  • Tools

More information

  • Managing Effects
  • To capture a performance


Scripts

A script is a collection of variables and routines written in a scripting language such as Visual Basic Scripting Edition or the simplified form of VBScript supported by the DirectMusic run-time library. Scripts are used in conjunction with a compiled application to play sounds and perform other basic tasks within the performance created by the application. An application can load a script, set and retrieve variables defined in the script, and call script routines.

The purpose of scripts is to give you, the sound designer, more immediate control over the soundtrack in an application.

For example, suppose you have created a segment of background music for a scene in a game where the level of tension can rise and fall. You want the music to reflect the level of tension by changing tempo. If you're not using scripts, you work with the developers to ensure that the application code sets an appropriate tempo in various situations. But when you test the game, you discover that the tempo is not fast enough when the game hero is in an exciting situation. You then have to ask the application developers to put in a new tempo value for that situation, then wait for a new build of the product so you can test it.

With a script, things work differently. As the project is being developed, you ask the developers not to set the tempo directly, but instead to set one or more variables in your script and then call routines that use those variables.

For example, you might have a variable called ExcitementLevel that specifies the type of situation, and a routine called MakeExcitement that sets the tempo based on the value in that variable. If you discover that the tempo is not fast enough when the situation is most intense, simply change how MakeExcitement deals with the maximum value in ExcitementLevel. You might even decide to change the response completely—for example, by playing a different segment. Whatever changes you make are reflected immediately in the current build of the application, because nothing in the application itself has changed.

More information

  • Script Designer


Variability

When you compose with DirectMusic Producer, you can choose different levels of variability in the music or other sounds you create. The content might never sound the same way twice, or it might sound the same each time it plays.

Note Music is never repeated exactly the same way, because DirectMusic introduces minute variations in the timing of notes, to give the feeling of a live performance.

The variability of a segment is partly under your control and partly under the control of the application developer. For example, you might create a style-based segment with many patterns, but the application, by controlling the groove level, might restrict the patterns actually chosen.

The following table represents the spectrum of variability you can achieve using DirectMusic Producer components in different combinations. At the low variability level is a segment component that is used as a simple container for a MIDI sequence or a wave; this segment plays the same way each time in a linear manner. At the high variability level is a segment that is used to combine the full variability of a chordmap and a style, yielding different results each time it plays.

Scenario | Low Variability | Medium Variability | High Variability
Music based on fixed notes | Import a MIDI file as a segment. | The application can make band and tempo changes. | Not applicable
Wave-based sounds | Import one or more wave files into a wave track and play them without variation. | Create variations of the waves. | Play waves as notes in a style-based segment using a custom DLS collection.
Pattern-based music | Not applicable | Create a segment with a pattern track, and create variations in any part of the pattern. | Add more parts to the pattern. Each part can contain 32 variations.
Style-based music | Not applicable | Create a style containing multiple patterns. Use a segment with a fixed set of chords that plays a style with variable patterns. | Use groove level changes to control which style patterns are used.
Style-based music with chordmap | Not applicable | Not applicable | The application can recompose the segment each time it is played, giving it a different chord progression.

More information

  • Groove Track
  • Importing a MIDI File as a Segment
  • Importing a Wave File as a Segment
  • Pattern Editor
  • Style Designer


Quick Start

This section introduces the Microsoft® DirectMusic® Producer project workspace and guides you through a few basic tasks. As you complete a simple project, you will get acquainted with many features of this application.

The Quick Start section takes the form of step-by-step lessons. Each lesson includes links to other parts of the documentation that describe the user interface in more detail. It is suggested that you work through the lessons to become familiar with basic tasks of segment design, and then move on to explore the parts of the application that are most relevant to what you want to accomplish.

If you have not already done so, you should read the following topics before starting:

  • Overview
  • Concepts

A more advanced tutorial is contained in the My Documents\DMUSProducer\Tutorial8 folder. That tutorial is documented separately.


Lesson 1: Getting Started

In this lesson, you will start the DirectMusic Producer application and load a sample project.

More Information

  • Project Workspace
  • Project Tree


To start DirectMusic Producer

  1. On the Start menu, click Programs.
  2. Click the DirectMusic submenu.
  3. Click the DirectMusic Producer icon to start the application.


To add the QuickStart project to the project tree

  1. On the File menu, choose Open Project.
  2. In the Open Project window, locate and open the DMUSProducer/QuickStart project folder, located in your My Documents folder.
  3. Open QuickStart.pro. The project is added to the project tree on the left side of the DirectMusic Producer window.
  4. In the project tree, click the plus sign next to the icon of the QuickStart project. The QuickStart project is opened, displaying its components.

The project contains the following files:

  • DemoMIDI.mid

    A MIDI source file consisting of a simple 13-measure song played by six instruments. This source file can't be played within the DirectMusic Producer environment; if you double-click the icon in the project tree, the file is played by your default MIDI player.

  • DemoStyle.stp

    A style containing notes imported from the DemoMIDI file and divided into short, individual patterns. You will learn how to create a style from MIDI data in another lesson.

  • Heartlnd.stp

    Another style that you can explore.

  • Heartland.sgp

    A segment file that contains chords and commands for playing the Heartland style.


Lesson 2: Importing a MIDI File into a Segment

This lesson introduces you to the segment, the fundamental unit of playable content. Segments can contain many different kinds of data. To get started quickly, you will create a segment based on the parts and notes in a MIDI file.

More Information

  • Importing a MIDI File as a Segment
  • Segment Designer Window


To import a MIDI file

  1. On the File menu, click Import File into Project, and then click MIDI File as Segment.
  2. Open the DMUSProducer/QuickStart project folder, located in your My Documents folder.
  3. Select the DemoMIDI.mid file and click Open.

The MIDI file is inserted in the project tree as a new segment file called DemoMIDI.sgp. Below the file name in the project tree, you will see the internal name for the segment component, DemoMIDI.

The Segment Designer Window is displayed in the following figure, showing the new segment.

DemoMIDI in Segment Designer

All the MIDI data from the source file, including tempo, notes, continuous curves, and patch assignments, has been imported into the segment. This data is arranged in horizontal tracks.

The Segment Designer window contains the following elements:

  • Timeline

The row at the top of the window shows the measures and beats as vertical lines, and numbers the measures. The imported MIDI file contains 13 measures of music, and the new segment automatically has the same number of measures. You may have to scroll to view all 13 measures.

  • Tempo Track

    Contains a tempo mark for the segment.

  • Time Signature Track

    Contains a time signature for the segment.

  • Chord Track

    Contains the chord changes for patterns. Because the segment contains only fixed sequences of notes, not style patterns, this track does not affect playback of the segment.

  • Sequence Tracks

    Contains all the note data imported into the segment, including the volume, velocity, continuous controller data, and channel assignments for each MIDI part. At the left, each part is labeled with the track group followed by a colon, the number and name of the performance channel on which the part plays, and the name of the part as derived from the MIDI file. This name does not necessarily reflect the actual instrument assignment for that part.

  • Band Track

    Contains a set of instrument assignments and settings. The band settings from the original MIDI file are at the beginning of the track and are called Band1.


Lesson 3: Saving the Segment

The segment of new MIDI data is a complete file you can save and reuse in other projects. You can also save it as a run-time file for playback in a DirectMusic application, since applications cannot play your working files.

More Information

  • Project Management
  • Delivering Content


To save the working file

  1. Activate the DemoMIDI segment editing window by clicking on it, or by double-clicking the DemoMID icon in the project tree.
  2. On the File menu, click Save DemoMIDI.sgp, or press CTRL+S. The segment is saved in its current state.


To save the run-time file

  1. Activate the DemoMIDI segment editing window by clicking on it, or by double-clicking the DemoMID icon in the project tree.
  2. On the File menu, click Runtime Save As.
  3. Choose a destination folder and file name, and click Save. If you have chosen a different folder than the default folder, you can make it the default folder for future saves of this file.


Lesson 4: Playing the Segment

In this lesson, you will be introduced to the playback controls and learn how to play a segment once or repeatedly, to select parts for playback, and to set a different start point so that the segment does not start at the beginning.

More Information

  • Playback and Recording
  • Segment Properties


To play the DemoMIDI segment

  1. Click the title bar of the DemoMIDI editing window to make sure it is activated, or activate the segment by double-clicking the internal name in the project tree.
  2. In the Transport Controls toolbar, click the Play from Start button, shown in the following figure, to play the entire segment.

    Play from Start button

    Note that as the segment plays, the numbered buttons in the Output Status Toolbar display shades of yellow to indicate which parts, or PChannels, are starting and sustaining notes.

  3. Click the Stop Immediate button, shown in the following figure, at any time to halt playback, or let the segment play to its end. Playback stops automatically at the end of the segment.

    Stop Immediate button


To loop playback of the segment

  1. In the project tree, right-click the internal icon of the DemoMIDI segment. A shortcut menu is displayed. Click Properties.
  2. In the Properties window, click the Loop tab. The following tab is displayed.

    Segment Properties Loop tab

  3. In the Loop Repeat box, enter a value other than 0. The value you select is the number of times the segment will play after the first time. To play the segment until it is explicitly stopped, select the Infinite check box.


To change the start point for segment playback

  1. In the project tree, right-click the internal icon of the DemoMIDI segment. A shortcut menu is displayed. Click Properties.
  2. In the Properties window, select the Segment tab. The following tab is displayed.

    Segment Properties Segment tab

  3. Under Start Time, enter a new value in the Bar box. You can also change the beat, grid, and tick values.
  4. Click the Play from Start button on the toolbar. Playback begins at the new start point.


To select parts for playback

  • To switch off a PChannel, click its button in the Output Status Toolbar .
  • To turn on the PChannel, click its button again.
  • To switch off all PChannels except one, double-click the button of the PChannel you want to solo.
  • To switch on all PChannels, double-click the button of a PChannel that is being played solo.


Lesson 5: Viewing and Editing Sequences

In this lesson, you will learn how to obtain close-up views of the notes in sequence tracks, and how to perform basic note-editing tasks.

More Information

  • Note Entry and Editing


To resize the timeline

  • Click the following magnifying glass icons located in the lower right corner of the editing window.

    Editing window zoom buttons

    These buttons enable you to shrink or expand the timeline so that more or fewer measures fit in the editing window.


To zoom in on a sequence track

  • At the right edge of the editing window, click the maximize button for the track you want to zoom in on. The display of that track expands to show the musical scale in more detail, as shown in the following figure.

    Zoomed view of sequence track

  • To expand or contract the height of each note strip, click the magnifying glass icons to the right of the piano keys.
  • To go to a different part of the scale, use the vertical scroll bar to the right of the piano keys.


To play a pitch

  • Click the piano key for the pitch, or click a blue note in the note strip. To sustain the note, hold down the mouse button.


To add a note

  1. Click where you want the note to begin. A gray rectangle appears.
  2. Right-click on the gray rectangle. On the shortcut menu, click Insert Note.

    - or -

    Click where you want the note to begin and then press the Insert key.


To edit a note

  1. Zoom in on the sequence track so that you can easily manipulate the blue notes by using the mouse.
  2. To adjust the velocity of a note, place the mouse over the upper edge so that the cursor becomes a double-headed vertical arrow. Drag the cursor up or down.

    To adjust the length of a note, place the mouse over the right edge so that the cursor becomes a double-headed horizontal arrow. Drag the cursor left or right.

    To move a note, place the mouse over it so that the cursor becomes a cross. Drag the cursor. The note can be dragged to another place in the same pitch, or to a different pitch.


Lesson 6: Changing the Tempo

The tempo track contains a mark in the first measure showing the original tempo of the imported MIDI file. You can change the setting of this mark to make the segment play back at a different tempo. You can also insert new tempo marks along the full length of the segment, with a limit of one mark per measure.

More Information

  • Tempo Track


To change the value of the first tempo mark

  1. In the first measure of the tempo track, right-click the tempo mark. A shortcut menu is displayed.
  2. Choose Properties. The Tempo Properties window is displayed.
  3. In the Tempo box, enter a tempo from 10 to 350 beats per minute.

Note The Properties window can remain open while you perform other tasks. The contents of the window change automatically when you select another item that has properties.

Instead of right-clicking on an item and clicking the shortcut menu, you can always open the Properties window by selecting the item and pressing F11.


To insert a new tempo mark

  1. In the tempo track, click a measure that does not have a tempo mark.
  2. Press the Insert key. A default tempo mark is inserted and the Tempo Properties window is displayed.
  3. In the Tempo box in the Properties window, change the tempo value if necessary.


To move a tempo mark

  1. Right-click on the tempo mark.
  2. Choose Properties. The Tempo Properties window is displayed.
  3. Enter new values for the measure, beat, and tick where you want the new tempo to take effect.

Or, you can move the tempo mark by dragging it with the mouse.


Lesson 7: Changing Band Settings

The band track contains a band in the first measure showing the original set of parts and instrument settings used in the imported MIDI file. By default, this band is inserted in the first measure of the segment and is called Band1.

The band is a set of mappings between PChannels and instruments. It also includes settings for the instrument playing on each PChannel. In this lesson, you will change the instrument, PChannel, volume, and pan settings.

More Information

  • Band Editor


To change the instrument

  1. In the Segment Designer window, double-click Band1 in the first measure of the band track. The following Band Editor window is displayed, showing settings for the instruments in the band.

  2. Select an instrument, right-click it, and click Properties on the shortcut menu. The PChannel(s) Properties window for that instrument is displayed.

  3. Click the button that is labeled with the instrument name. A menu of instrument families is displayed. Submenus list individual instruments, as shown in the following figure.

  4. Select an instrument from the menu.


To change the PChannel

  1. In the first measure of the band track, double-click Band1. The Band Editor window is displayed.
  2. Select a part in the list, right-click it, and click Properties on the shortcut menu. The PChannel Properties window is displayed for the instrument.
  3. In the text box at the upper left corner, enter a new PChannel number, or use the up and down arrows to change the number. You must select an unused PChannel.
  4. In the text box to the right of the PChannel number, enter a name for the PChannel. You can also accept the default value, which is the same as the PChannel number.


To change the pan and volume

  1. In the first measure of the band track, double-click Band1. The Band Editor window is displayed.
  2. Select a part in the list. The PChannel number is displayed as a red square on the grid.
  3. Drag the red square up or down to make the part louder or softer in the band's mix. Drag it left or right to change the pan setting.

You can also change the volume, pan, and other settings by using the Properties window for the instrument. Right-click the instrument and click Properties on the shortcut menu, or select the instrument and press F11.

Note You can modify band settings and other properties of a segment while the segment is playing and hear the results immediately. You can also stop and restart the segment while Properties windows and editing windows are open.


Lesson 8: Inserting a New Band

In this lesson, you will insert a new band in the segment, so that different instruments will begin to play the various parts midway through playback.

More Information

  • Band Editor


To insert a new band

  1. In the band track, right-click a beat that does not contain a band marker. A shortcut menu is displayed. Click Insert. A Band Properties window is displayed; you can close this immediately.

    - or –

    Select the beat and then press the Insert key.

  2. In the band track, double-click the newly inserted band. The Band Editor window appears.
  3. Modify the band by using the shortcut menu and Properties window for each part in the band, and by dragging the squares for each PChannel on the grid. See Lesson 7: Changing Band Settings.


To insert an existing band

  1. Select the band in the project tree.
  2. Drag the selected band from the project tree to the Segment Designer window, placing it in the band track at the desired beat in the segment.
  3. To adjust the measure and beat position of the inserted band in the segment, right-click the band and choose Properties. Enter the desired measure and beat.


Lesson 9: Importing a MIDI File into a Style

In previous lessons, you constructed a segment based on MIDI data. This segment consists of continuous data, largely in sequence tracks, that sounds exactly the same each time it is played.

This lesson will show you how to create a style, which is a collection of note patterns that can be combined in different ways each time the segment is played.

You can build a style in two ways:

  • Import an existing MIDI file.
  • Build a completely new style from notes entered either by hand or by a MIDI device.

In this lesson, you will use only the first method. You will keep all 13 measures of the imported DemoMIDI file in one piece, so you can easily compare it to the DemoMIDI segment. However, a style is usually made up of numerous short patterns, which are typically two to four measures long.

More Information

  • Style Designer


To import a MIDI file as a single pattern

  1. On the File menu, click New.

    In the Create New File(s) dialog box, double-click Style. A new style named Style1 is added to the project tree, with its internal name and its component band, pattern, and motif folders displayed. The Patterns folder contains a default, empty pattern called Pattern1. You will not be using this pattern but will create a new one.

  2. Right-click the Patterns folder. A shortcut menu is displayed.
  3. On the shortcut menu, click Import MIDI File As Pattern.
  4. In the Import MIDI File to Pattern window, double-click the DemoMIDI.mid file. A new pattern called DemoMIDI appears in the Patterns folder in the project tree. In addition, a new band of the same name appears in the Bands folder.


To open and play the pattern

  1. In the project tree, double-click the DemoMIDI pattern. The Pattern Editor window is opened, displaying the contents of the pattern.

  2. Click the Play from Start button. The pattern begins playback and loops repeatedly.


Lesson 10: Breaking a Long Pattern into Patterns with Variations

The imported DemoMIDI pattern consists of 12 measures of song material plus a one-measure ending. The first four measures are actually two slightly different phrases, each two measures in length. In other words, they are variations on a two-measure phrase. The next set of four measures also consists of two slightly different phrases, as does the third set of four measures. The final measure of the imported MIDI data serves as an ending for the entire piece.

The following illustration is a graphic representation of the imported DemoMIDI file, broken into phrases and variations.

Breakdown of DemoMIDI pattern

The phrases of a style are usually divided into separate patterns. The green lines along the top of the figure represent the divisions between logical patterns in the example. In this lesson, you will create patterns consisting of individual phrases with variations. By doing so you will create a style that takes the form shown in the following figure.

Style derived from DemoMIDI pattern

Note By working through the following steps at least once, you will learn valuable techniques for creating patterns. However, you don't have to repeat the steps for every pattern. For your convenience, a finished style containing all the patterns and variations is already in the project as DemoStyle.stp.

More Information

  • Editing Window
  • Pattern Editor


To extract a short pattern from a longer one

  1. In the project tree, right-click the DemoMIDI pattern. On the shortcut menu, click Copy.
  2. Right-click the Patterns folder. On the shortcut menu, click Paste. A new copy of the pattern, called DemoMIDI1, is placed in the Patterns folder. Rename DemoMIDI1 to PatternA.
  3. Open PatternA in the editing window.
  4. Select all the parts in the pattern by dragging the cursor along the narrow rectangles at the left end of each track strip. The rectangles turn red to show that the tracks are selected. Do not select the timeline strip, which is the top strip containing the time signature, or the chord track, which is just below the timeline.
  5. On the Edit menu, click Select All. The selection in the Pattern Editor turns black.
  6. On the Edit menu, click Cut. PatternA is now a blank pattern with the same parts and time signature as the original pattern.
  7. On the shortcut menu for PatternA, click Properties.
  8. In the Properties window, click the Length button and change the value to 2 measures.
  9. Reopen the DemoMIDI pattern in the editing window.
  10. Select all the tracks in the DemoMIDI pattern, as you did with PatternA. But this time, rather than selecting the entire length of the pattern, select only the first two measures by dragging the cursor along the timeline strip from the beginning of the first measure to the end of the second measure. The display will scroll as you drag past the right edge of the window.
  11. On the Edit menu, select Copy to place measures 1 and 2 in the Clipboard.
  12. Open PatternA again and select the first two measures.
  13. On the Edit menu, click Paste and Overwrite.

Note All notes that continue beyond the second measure are displayed in their entirety, even though there is no third measure.

You now have a two-measure pattern identtical to the first two measures of the DemoMIDI pattern. In the next step, you will convert the next two measures of the DemoMIDI pattern to a variation on the pattern you have just created.


To add a variation to a pattern

  1. Open the DemoMIDI pattern in the editing window.
  2. Select all the tracks in the DemoMIDI pattern, as you did in the previous lesson. Select measures 3 and 4 by dragging the cursor along the timeline strip.
  3. On the Edit menu, select Copy to place measures 3 and 4 in the Clipboard.
  4. Reopen PatternA in the editing window.
  5. Expand the display of each part by clicking the maximize button at the left end of the strip. For each part, you now see 32 variation buttons. Button 1 is selected.
  6. In each part, double-click Button 2 so that it is the only one that is selected. Right-click on the button and click Enable on the shortcut menu. Buttons 1 and 2 should both be light gray, indicating that both variations are enabled.
  7. Select the first two measures of PatternA.
  8. On the Edit menu, click Paste and Overwrite.

You can now view the notes in each variation by selecting Button 1 or Button 2. If you select both buttons, you see the notes for both variations.

Note that the other buttons are dark gray. This means those variations are disabled. Each time the pattern plays, disabled variations are ignored. By enabling one or more of these buttons, you can make silence a possible variation for that part in the pattern. For more information, see Part Variations.


Lesson 11: Testing Style Playback

The organization of the style you created in the previous lesson is shown in the Style Designer window, which you can view by double-clicking the icon for the internal name of the style. The following figure shows the style in the complete DemoStyle.stp file provided with the QuickStart project.

DemoStyle in Style Editor

The window shows the list of patterns with their length and various other properties. The Ending pattern has an "E" in the Embellishment column, indicating that it is an end embellishment. You can turn any pattern into an embellishment by selecting the appropriate button in its Properties window. Standard embellishments are intro, fill, break, and end.

You can now play the predesigned DemoMIDI style to hear its individual patterns and variations.


To listen to the patterns of the DemoMIDI style

  1. Double-click the DemoStyle icon in the project tree.
  2. Ensure that none of the PChannels are muted on the Output Status Toolbar.
  3. In the Style window, click PatternA to select it.
  4. Click the Play from Start button. PatternA plays from its beginning and repeats continually, alternating between its two variations after every two measures.
  5. As the style is playing, select PatternB.
  6. Click the Transition button, shown here. Playback switches to Pattern B, alternating between its two variations after every two measures.

Repeat steps 5 and 6 to hear each pattern in turn.


Lesson 12: Creating a Style-Based Segment

Now that you have created a style with multiple patterns and variations, you can use it to create a segment. When you play this segment, it will contain the same material as the MIDI file you began with at the beginning of the Quick Start. However, the material is organized differently and will play back with variations.

This lesson uses the DemoStyle from the QuickStart project. This style contains all the patterns you learned how to create in Lesson 10. To prepare the style for use in a segment, you first need to put the patterns in categories by assigning them groove levels and embellishments. You can then create a simple segment that imposes some constraint on the order in which patterns are played.


To add grooves and embellishments

  1. Double-click the DemoStyle icon in the project tree.
  2. In the Style Editor, right-click PatternA and click Properties on the shortcut menu. The following Properties window is displayed.

  3. In the Properties window, set the Groove Range from a low of 1 to a high of 50.
  4. Select PatternB and set the same Groove Range.
  5. Select PatternC and set the Groove Range to 51 to 100.
  6. Select PatternEnding and make sure the End button is selected.

You have now specified conditions for when the various patterns can be played. These conditions will be set in the segment in the next step.


To create a segment based on the style

  1. On the File menu, click New. In the Create New File(s) dialog box, select Segment. Clear the Use Default Names checkbox and enter StyleBased as the name. Click OK.
  2. In the Add New Tracks dialog box, select Groove Track and Style Track. You can select both by holding down the Control key while clicking. Click OK. You see the new segment in the Segment Designer window.
  3. Open the Properties window for the segment. Set the length to 13 bars.
  4. Select the first measure in the groove track and press Insert. In the Groove Level Properties window, the groove level should already be set to 1.
  5. Select measure 9 in the groove track and press Insert. Set the groove level to 100.
  6. Select measure 13 in the groove track and press Insert. In the Embellishment list, select End.
  7. Select the first measure in the style track and press Insert. A Style Properties window appears. Select DemoStyle from the drop-down list. The following figure shows the style being inserted in the segment.

    Style-based segment and style properties

You have now created a segment that only plays back certain patterns in each measure. For the first eight measures, the segment will play only PatternA and PatternB, which you earlier marked as valid for groove levels 1 to 50. For the next four measures, it will play only PatternC, which is valid for groove levels 51 to 100. Finally, because the last measure is marked as an ending, only PatternEnding can be played in this position.

Play the segment to observe how the patterns are selected, and how variations are used. Four different sequences of patterns are possible for the first four measures: AA, AB, BA, and BB. Because most of the patterns in the style have two or more variations, and the choice of variation is independent for each part within the pattern, the total number of ways this simple piece of music can be played is very large.


Sample Files

Many sample files are provided with Microsoft® DirectMusic® Producer. These files demonstrate the use of styles, bands, secondary segments, chordmaps, groove levels, signpost chords, waves, and much more.

To view the sample files, you must install them. You are given the choice of doing so during the DirectMusic Producer installation process.

The sample files are stored in a project called Demo8. When the project is open, the Bookmark list contains numerous bookmarks to help you navigate through the samples. Selecting a bookmark causes related components to be opened and arranged for easy viewing.


To open the Demo8 project

  1. On the File menu, choose Open Project.
  2. In the Open Project window, locate and then double-click the Demo8 project folder. Its default location is the DMUSProducer\Demo8 folder, found in your default My Documents folder.
  3. Double-click Demo8.pro to add it to the project tree.
  4. In the project tree, click the plus (+) next to the icon of the Demo8 project. The Demo8 project is opened, displaying its component files.


To view a set of sample files

  1. If any editing windows are open, click Close All on the Window menu.
  2. Select a bookmark from the drop-down list. A set of editing windows is displayed. For more information, see Bookmark Controls.
  3. On the Add-Ins menu, click Message Window.
  4. Locate an open segment that has a lyric track, select its editing window, and play it. Descriptive text from the lyric track is displayed in the Message window.


Project Workspace

This section introduces the user interface of Microsoft® DirectMusic® Producer. It describes parts of the interface that you will use often and in a variety of tasks.

The following topics are covered:

  • Main Window
  • Navigation Controls
  • Project Tree
  • Editing Window
  • Properties Window
  • Message Window
  • Customizing the Workspace

Other, more specialized parts of the interface are described in other sections of this documentation, under the topics that cover their use.


Main Window

The following illustration shows the Microsoft® DirectMusic® Producer application window. The arrangement of the various elements might be different from what you see on your screen.

The project workspace contains some or all of the following elements, depending on what components are open and what view options have been selected:

  • Project Tree

    Displays the components that make up a project.

  • Standard Toolbar

    Includes file management tools and window view controls.

  • Bookmark Controls

    Used to recall the placement of windows at the time the bookmark is set.

  • Transport Controls (including Tempo box)

    Contain buttons for recording and playback.

  • Output Status Toolbar

    Contains a combined button and meter for each active PChannel. Each button displays the PChannel number, the name assigned to the PChannel, and a graphic line representing the relative volume level of the PChannel during playback.

  • Transport Options Toolbar

    Used to set a metronome, a moving cursor for playback, and all playback devices.

  • Secondary Segment Toolbar

    Used to select additional segments or motifs to play on top of the component in the Transport list.

  • Synthesizer Status Window

    Displays statistics for the resources used by DirectMusic Producer.

  • Wave and MIDI Export Toolbar

    Used to capture a performance to a file as it plays. In the illustration, this toolbar is shown undocked as a separate window. All toolbars can be undocked. See Rearranging Views.

  • Editing Window

    Enables you to edit an individual component. When you open a component, one of the design modules is launched. Each design module contains its own set of editing tools and methods. Multiple editing windows can be open, and these windows can be resized and arranged.

  • Status Bar

    Displays tips and information about an item on the screen that the mouse points to.


Navigation Controls

DMP provides numerous menus and other controls for navigating and getting information about the workspace. This section is a guide to the following elements of the user interface:

  • Drop-Down Menus
  • Shortcut Menus
  • Standard Toolbar
  • Status Bar
  • Bookmark Controls

See Also

  • Keyboard Shortcuts


Drop-Down Menus

The following menu bar is provided along the upper edge of the DirectMusic Producer window. It contains the names of several menus.

For more information on these menus, see the following topics:

  • File Menu
  • Edit Menu
  • View Menu
  • Add-Ins Menu
  • Window Menu
  • Help Menu

In addition to these standard drop-down menus, the ChordMap menu is added to the menu bar when the Chordmap Designer is active.

When an editing window is maximized, an icon representing the design component is displayed at the left side of the menu.


File Menu

The File menu contains the following commands:

  • New

    Starts a new project or adds a new component of any type to an existing project. For information about creating new projects or component files, see Project Management.

  • Open Project

    Opens an existing project.

  • Insert Files into Project

    Adds files of any type to a project. This includes existing DirectMusic Producer components as well as files from inside or outside the DirectMusic Producer environment such as text files and wave files. For information about adding all types of files, see Managing Components.

  • Import File into Project

    Adds a MIDI, wave, or Interactive Music Architecture (IMA) file to the project, and creates a new segment based on the file.

  • Save File

    Saves changes made to the component in the active editing module. The name and file extension of the component are included on the File menu with the Save command (for example, Save My Style.stp). The Save command is disabled if no component is open in an editing window.

  • Save As

    Saves the file as it appears in the active editing module and provides the option to name the file and save it in any location on your computer. The name and file extension of the component are included on the File menu between Save and As (for example, Save My Style.stp As). The Save As command is disabled if no component is open in an editing window.

  • Save Project

    Saves changes made to the selected project.

  • Duplicate Project

    Creates a duplicate of the selected project and provides the option to name the duplicate copy and save it in any location on your computer.

  • Close Project

    Closes the selected project and provides the option to save changes to each component that has changed in the project.

  • Runtime Save As

    Saves the file in the active editing module as a DirectMusic run-time file and provides the option to name and save it in any location on your computer. For more information, see Delivering Content.

  • Runtime Save All Files

    Saves all components in the selected project as DirectMusic run-time files. Each run-time file is saved using the exact name of the original file and is placed in the default directory C:\My Documents\DMUSProducer\Current_Project\Runtime Files.

  • Exit

    Closes DirectMusic Producer and provides the option to save changes to each project and its components.


Edit Menu

The Edit menu contains the following commands for component editing:

  • Undo and Redo

When you change a component in an editing window, the Undo and Redo commands become available on the Edit menu. You can also use CTRL+Z to undo a change or CTRL+Y to reapply the change. If you have multiple components open for editing, Undo and Redo operations work separately with each editing window.

  • Cut, Copy, Paste, and Delete

These commands affect all selected items in the editing window.

  • Select All

This command selects all selectable items in the editing window.


View Menu

Click the name of any window or toolbar listed in the View menu to display or hide it. The following elements can be displayed or hidden:

  • Project Tree
  • Standard Toolbar
  • Bookmark Controls
  • Status Bar
  • Transport Controls
  • Transport Options Toolbar
  • Output Status Toolbar
  • Secondary Segment Toolbar
  • Synthesizer Status Window
  • Wave and MIDI Export Toolbar
  • DLS Conditions Toolbar
  • Properties Window.


Add-Ins Menu

The Add-Ins menu enables you to display extra components of DirectMusic Producer. The only add-in supplied with the application is the Message Window.


Window Menu

The Window menu contains commands for arranging and viewing open windows in the Editing Window.

  • Cascade

    Arranges the windows of the open components in the editing window so they overlap, with at least the top edge of each window showing.

  • Tile Horizontally

    Arranges the windows so they line up from top to bottom without overlapping. This command is also included in the Standard Toolbar.

  • Tile Vertically

    Arranges the windows so they line up side by side without overlapping. This command is also included in the Standard Toolbar.

  • Close All

    Closes all windows.

  • Active window

    The names of open windows are listed at the bottom of the menu. The currently active window has a checkmark next to its name in the list. To make a window active and bring it to the front, click its name. If more windows are open than can be displayed in the list on the menu, click Windows… to see a complete list.

    A window also becomes active when the corresponding component in the Project Tree is clicked. You can cycle through open windows by using CTRL+TAB.


Help Menu

The Help menu contains commands for reading the Help file and for getting information about DirectMusic Producer:

  • Contents

    Opens the DirectMusic Producer Help file, and displays its table of contents.

  • About

    Describes the currently active design module, and provides the version number and copyright date for the DirectMusic Producer application.

    You can also obtain help for the currently active design component by pressing F1.


Shortcut Menus

Shortcut menus are used throughout DirectMusic Producer to provide lists of commands that apply specifically to an object or item you are editing. You can display the shortcut menu for almost any item on the screen by right-clicking it. This includes right-clicking a component icon in the project tree, or right-clicking an object in the Editing Window.

Shortcut menus also contain a Properties command that displays the Properties Window for the selected object. You can use the Properties window to view and change the properties of almost every object represented on the screen.


Standard Toolbar

The standard toolbar includes five buttons used for file management, and three window view controls, as shown in the following figure:

The file-management buttons include the following:

  • New

    Starts a new project or adds a new component of any type to an existing project. For information about creating new projects or component files, see Project Management.

  • Open Project

    Opens an existing project.

  • Insert Files

    Adds files of any type to a project. This includes existing DirectMusic Producer components as well as files from inside or outside the DirectMusic Producer environment such as text files and wave files. For information about adding all types of files, see Managing Components.

  • Save Project

    Saves changes made to the selected project.

  • Save File

    Saves changes made to the component in the active editing module. The Save button is disabled if no component is open in an editing window.

The following buttons are used to change how windows are arranged and displayed:

  • Toggle Project Tree

    Turns the display of the project tree on or off.

  • Tile Horizontally

    Arranges the editing windows of the components so they line up from top to bottom without overlapping.

  • Tile Vertically

    Arranges the editing windows so they line up side-by-side without overlapping.


Status Bar

The status bar displays information about an item on the screen that the mouse is pointing to. The right side of the status bar contains windows showing the elapsed time and offset time during playback of DirectMusic Producer components such as segments, patterns, and motifs.

When you view a band, the window at the right side of the bar displays the pan and volume settings of a selected PChannel. When you view a wave file, the window at the right side of the bar displays information for the selected portion of the wave.


Bookmark Controls

Bookmarks provide the means to store and recall a view of windows and toolbars on the screen. They make it easy to switch between multiple views of the components you are editing. For information on options for customizing the view of windows and tools on your screen, see Customizing the Workspace.

The Bookmarks toolbar is shown in the following figure.

The elements in the toolbar, from left to right, are as follows:

  • Bookmark List

    Lists bookmarks you have created. Select a bookmark to return to a view. You do not lose any changes to components made since the bookmark was created.

  • Add Bookmark

    Adds a bookmark for the current view.

  • Remove Bookmark

    Deletes the currently selected bookmark.

  • Remove All Bookmarks

    Deletes all bookmarks from the list.


To create a bookmark

  1. Arrange all windows and toolbars on the computer screen as desired.
  2. In the Bookmark controls, click the Add Bookmark button. The following dialog box is displayed.

    New bookmark dialog box

  3. In the Bookmark Name box, enter a name for the bookmark.
  4. Click OK.


Project Tree

The project tree shows one or more projects. Each project is indicated by a folder icon. The components of every project in the project tree are organized in a tree structure. The following illustration shows a simple project tree.

Each major component of a project is represented by two icons: a top-level icon representing the component file, and a second-level or internal icon representing the component itself. Some components contain further levels of objects.

Next to the icon for each object that contains other objects is a plus (+) or minus (–) symbol. The next level can be hidden or displayed by clicking the symbol. You can also expand the tree for a folder or component file by double-clicking the icon or name.

Double-clicking the second-level icon or name of a component opens that component in an Editing Window.

Every object in the tree, except folders, has its own Properties Window. All objects have Shortcut Menus.

Components in the project tree can be sorted by name, type, or file size. Right-click the project icon and click Sort Tree on the shortcut menu.

See Also

  • Component File Properties
  • Drag-and-Drop
  • Project Management
  • Project Properties


Editing Window

When you double-click music components in the project tree, they are displayed in an editing window using the design module for that type of component.

Although more than one editing window can be open, only one component at a time is active and available for editing. The active component is highlighted in the project tree. DirectMusic Producer automatically switches to the required design module for the component displayed in the active window. For an illustration, see Main Window.

This section introduces elements of the editing window used by more than one design module. For information specific to individual modules, see the following topics:

  • Audiopath Designer Window
  • Band Editor Window
  • Chordmap Designer Window
  • DLS Designer Window
  • Note Editing Windows
  • Script Designer Window
  • Segment Designer Window
  • Style Designer Window
  • Toolgraph Designer Window
  • Wave Editor


Timeline

Three design modules—Chordmap Designer, Segment Designer, and Pattern Editor—display a timeline, as shown in the following illustration.

The timeline contains the following elements:

  • Time Signature

    The time signature is not shown in the timeline in Segment Designer, because it is contained in the Time Signature Track.

  • Barlines

    Measure boundaries are shown as heavy black lines.

  • Beats

    Beats are shown as thin blue lines.

  • Clock Time

    Click the button to turn the display of clock time on and off. For more information, see Real-Time Display.

  • Measure Numbers

    Click the button to turn the display of measure numbers on and off when clock time is displayed.


Real-Time Display

In the timeline, you can display the time in seconds. The time at a given beat or measure varies according to the tempo and time signature. For example, the following illustration shows the elapsed seconds if the tempo is 120 beats per minute (bpm) using a 4/4 time signature.

Real-time display by measure

Each four-beat measure takes two seconds to complete. Changing to a different tempo alters the number of seconds required for each measure.

Three formats are available for the display of clock time. To select one, right-click on the timeline and click Realtime Display on the shortcut menu.

  • Seconds

    The time is shown where each whole second falls.

  • Measures

    The time, measured to the nearest hundredth of a second, is shown at the beginning of each measure.

  • Beats

    The time is shown at each beat.


Time and Beat Measurement

In many parts of DirectMusic Producer, you can use settings for music time divisions that give you a high level of control over when events take place.

The following divisions are used:

  • Measures

    Standard groupings of beats according to the time signature, such as 4/4.

  • Beats

    The beats within each measure, as defined by the time signature.

  • Grid

    The subdivisions of the beats, such as 16th or 32nd notes, or up to 24 subdivisions per beat. See Grid Divisions.

  • Ticks

    Based on 768 ticks per quarter note.

Grids and ticks are not displayed on the timeline. Grids are displayed in note editing windows.


Snap To

The Snap To command on the timeline shortcut menu affects the behavior of the rectangular Insertion Marker that appears when you click a note editing window. The insertion point snaps to the nearest grid, beat, or bar division according to the setting. The length of the insertion marker is also determined by the setting. For example, if you choose Grid, the length of the insertion marker is one grid, and every note you insert has a default length of one grid.

This setting also determines the minimum increment when you drag the cursor across the timeline to select data in tracks.

Right-click the timeline, click Snap To, and select one of the four options shown in the following figure.

Snap To options See Also

  • Grid Divisions


Zoom Buttons

The Editing Window for a module that uses a timeline has a pair of zoom buttons in the lower right corner, as shown in the following figure.

Click the plus (+) sign to magnify the timeline horizontally, so that fewer measures are shown in the window. Click the minus (-) sign to show more measures in the window.


Selected and Active Tracks

Editing windows in the Segment Designer and Pattern Editor design modules have multiple selection buttons along the left edge used for selecting the timeline, instrument parts, and tracks.

Click the button to select the track. Selecting a button does not deselect any other one. Selecting a track in a segment also selects any continuous controller (CC) tracks associated with that track. To select adjacent buttons, drag the mouse down the column of selection buttons.

More than one track or part can be selected. Most commands on the File menu, such as Cut and Select All, apply to data in selected tracks or parts. The Delete Track(s) command on the shortcut menu in the editing window also applies to all selected tracks.

Only one track or instrument part can be active. The track becomes active when you click on any part of it. Most commands on the shortcut menu, such as Insert Note and Select All, apply only to the active track or part.

An active track or part is not necessarily selected. However, if no other tracks are selected, commands that normally apply to selected tracks, such as Cut and Delete Track(s), apply to the active track.

Selected buttons are red, as shown in the following figure. The active track has a different shading in the editing area. In the figure, the active track is the first sequence part, shown with no shading. The colors of active and inactive tracks may be different on your screen; see Changing Colors.

Selection buttons and active track

Selecting the selection button on the timeline causes the entire timeline to be selected. For information on using the timeline to select data, see Selecting Regions in Segments and Patterns.


Selecting Regions in Segments and Patterns

To select ranges of data in segment tracks and patterns, you select the tracks or parts and use the timeline to select a region within those parts. All data in the selected region can then be cut or copied to the Clipboard, or deleted.

First select the tracks or parts by using the selection buttons. For more information, see Selected and Active Tracks.

Then select a portion of the timeline by dragging the cursor over it, or select the entire timeline by clicking its selection button. You can also select a portion of the timeline by clicking on the start point and then pressing SHIFT when you click on the end point.

The minimum increment when the timeline selection is extended is determined by the Snap To setting.

While the timeline is highlighted, you can click a track's selection button to add it to the selected group of tracks, or click it again to remove it from the selection. While the timeline is highlighted, you can also extend or shorten the selected region by dragging the right end of the region.

The following figure shows a Pattern Editor window where all the notes in the first eight measures of a pattern have been selected.

Selection in an editing window

In the figure, the Chords for Composition selection button is not red; therefore the data in that track is not selected. However, this data can be added to the selection at any time by clicking the track selection button.

See Also

  • Selecting Notes


Insertion Point

The insertion point is a thin, vertical line in the editing window that indicates where data can be pasted, and where playback will begin when the Play Button is clicked. The following four design modules use this insertion point:

  • Segment Designer
  • Chordmap Designer
  • Pattern Editor
  • Wave Editor

The following illustration shows an editing window with the insertion point near the end of the first measure. The Insertion Marker is also shown.

Insertion point in editing window

You can place the insertion point by clicking anywhere within the editing window. The insertion point moves from left to right as the sound is played.

The insertion point specifies only the horizontal position, or start time, of pasted data. The vertical position of the data within a track is determined by the data itself. For example, a note is pasted at its original pitch.


Insertion Marker

When you click in the maximized editing window of a sequence track in the Segment Designer module or a part display in Pattern Editor, an insertion marker is displayed, as shown in the following illustration:

The marker indicates the time and pitch where a note is entered when you use the Insert Note command or press the INSERT key. For more information, see Entering Notes by Using the Mouse and Computer Keyboard.

You can adjust the start time and pitch of the insertion marker by using the arrow keys. You can also change its pitch by clicking on either a piano key or the grand staff, depending on the current view of the editing window. In hybrid notation view, using the UP and DOWN arrows is the easiest way to set the pitch to a sharp; the position of the insertion marker does not change, but an accidental is displayed in front of it.

The insertion marker serves a different purpose than the Insertion Point. The insertion point only indicates the beginning beat and division where material is pasted and does not indicate pitch or vertical position of the pasted material. The insertion marker shows both the pitch and the length of the note you insert.

The exact horizontal placement and width of the insertion marker are determined by the Snap To setting.


Properties Window

The properties for all files, components, and other objects in the project tree, and most objects in an editing window, are displayed and edited in the Properties window. The following figure shows the Properties window for a segment component.

Sample properties window

To display the Properties window:

  • Right-click an object and click Properties on the shortcut menu.

    - or –

    Click on an object and press F11.

Only one Properties window can be open at a time. The window is automatically updated to display the properties of any component you select. You do not have to close the window to continue doing other work.

For information on specific configurations of the Properties window, see the topic for the properties of the object, such as Segment Properties or Note Properties.


Info Tab

The Properties Window for many components includes an Info tab containing general information that is saved with the run-time file. A typical Info tab is shown in the following figure.

Info tab in Properties dialog box

The Info tab contains the following fields:

  • Subject

    Name you give the style to describe it.

  • Author

    Your name.

  • Copyright

    Copyright information.

  • Version

    Four levels of version information. Enter up to four digits in each box.

  • Information

    Descriptive information to save with the style.

  • Edit GUID

Enables you to view and change the globally unique identifier (GUID) number for a component. For more information, see Edit GUID Dialog Box. This button appears only in Properties windows for components that have GUIDs.


Common Dialog Boxes

This section describes the following dialog boxes used in several components of DirectMusic Producer:

  • Add/Remove PChannels Dialog Box
  • Edit GUID Dialog Box
  • Set Time Signature and Grid Dialog Box


Add/Remove PChannels Dialog Box

The following dialog box is used for managing the set of PChannels in various components.

Add/Remove PChannels dialog box

This dialog box contains the following elements:

  • PChannel

    In the text box, enter or select a PChannel number. In Audiopath Designer, numbers in use by other mix groups are not available. The name of the selected PChannel is displayed below this box.

  • Add

    Click to add the value of PChannel to the list. The value in PChannel is automatically incremented to the next available number.

  • Add Next 16

    Click to add the next 16 available numbers, including the one in the PChannel box.

  • Remove

    Click to remove PChannels selected in the list.

  • PChannels

    View a list of PChannels to include in the mix group or Mute Track. Select one or more items in the list to remove them.

See Also

  • Band Editor Add/Remove PChannels Dialog Box


Edit GUID Dialog Box

DirectMusic Producer uses globally unique identifiers (GUIDs) to identify some components that might be referenced by other components. Because it is almost impossible to create two components with the same GUID, this is a more precise means of distinguishing components than using file names.

The Info Tab of some components contains an Edit GUID button that displays the following dialog box.

Edit Guid dialog box

Click Create New GUID to generate a new value.

Note GUIDs are unique because they are automatically generated. You should not manually edit a GUID. Use the Edit GUID dialog box only to create a new GUID for a component because the component has changed since it was last distributed, or to copy the GUID to the Clipboard for inclusion in program code or component documentation.


Set Time Signature and Grid Dialog Box

The dialog box shown in the following figure is used for setting the time signature and grid division in a style, in a Pattern Track, and in a Time Signature Track in a segment that does not contain styles.

Set Time Signature and Grid dialog box

This dialog box contains the following settings:

  • Time Signature

    Values for the Beats Per Measure field range from 1 to 100. The Beat field contains a drop-down list with the following values for the beat: 1, 2, 4, 8, 16, or 32, representing a whole note, half note, quarter note, eighth note, sixteenth note, and thirty-second note.

  • Grid

    The value in the Divide Beat drop-down list is the number of Grid Divisions for each beat. If the beat is 4, lower values are shown as notes; for example, 2 grids per beat are shown as an eighth note.


Message Window

The Message window displays text generated by a Lyric Track or script. View this window by clicking Message Window on the Add-Ins menu.

Note Messages generated during playback are shown only if the segment is playing on an audiopath that includes PChannel 1.

An error encountered in a script routine is described in the Message window along with the line number of the code causing the error, as shown in the following figure.

You can also place Performance.Trace commands in a script routine to send messages to the window. For example:

Trace "Entered PlayIt routine."

The text associated with the Trace command appears in the Message window when the command is executed.

The Message window displays errors and Trace statements for scripts executed from within the Script Designer, as well as those executed by a segment's Script Track.


Customizing the Workspace

This section describes the following elements of the Microsoft DirectMusic Producer interface that can be customized to suit your needs and tastes:

  • Rearranging Views
  • Changing Colors
  • Changing the Background


Rearranging Views

Almost every element on the screen in DirectMusic Producer can be resized and moved. When you close the application, it saves the current arrangement of toolbars and windows. You can also save and retrieve views by using Bookmark Controls.

The project tree and all toolbars can be undocked from their original positions and moved anywhere on the screen.

To move a toolbar

  • Click on an empty gray area and drag with the mouse.

To undock the project tree or a toolbar

  • Double-click on an empty gray area of the project tree or toolbar.

    - or -

    Click on an empty gray area and drag to the middle of the workspace.

To redock the project tree or a toolbar

  • Double-click on the title bar of the floating window.

    - or -

    Drag the window to an edge of the workspace. The project tree docks at either the left or right edge; the toolbars dock at either the top or bottom edge.

To display or hide the project tree or a toolbar

  • Click it on the View menu. You can also hide a floating window by closing it.


Changing Colors

To change the color of the track display shading in Segment Designer and Pattern Editor, click on the Editing Window and press G. A standard color dialog box is displayed. To remove shading, select white as the color.

For best results, the display properties on your computer should be set to high color or better—that is, more than 256 colors.


Changing the Background

To display a picture of your choosing in the Editing Window, open the Dmprod.ini file in a text editor and add or edit the following section, substituting the appropriate path and file name:

[Custom]
Wallpaper=C:\Images\MyWallpaper.bmp

The file must be in the .bmp format. The image is tiled to fill the entire window.

To display a plain background, remove this section from the .ini file.


Project Management

Organizing your work into projects offers several advantages. You can place several components into a single project, and set the components to share data with one another. Several components in a project can share references to a single component that serves as a source of data. For example, a style file can serve as the source of musical material for several segments in a project. If you make changes to the style file, the changes are reflected in the segment that references it.

Note To be sure of preserving links between files, do not set a reference in one project to a component in a different project. Saving files to a network share is not recommended. .

Component files and their subcomponents are stored in a project folder, but are not contained in the project file itself. The project file, with an extension of .pro, contains information about the project and its components. The project file contains a pointer to the location where the various component files are stored. If you delete a component from the project folder, you remove the pointer to the component. The component is then removed from your computer hard drive.

This section gives step-by-step instructions for creating and opening projects and adding, moving, and copying components. The following topics are covered:

  • Creating a New Project
  • Managing Components


Creating a New Project

All components and files you edit or view using DirectMusic Producer must be part of a project. You can create a new project using either a default name (Project1, Project2, and so on) or using a name you choose.


To create a new project

  1. On the File menu, click New. The following Create New File(s) dialog box is displayed.

    Create New File(s) dialog box with Use Default Names selected

  2. In the File Types list, click Project. Press CTRL and click one or more component types in the list to add them to the project. You can also drag the mouse across the list to select adjacent component types, or press SHIFT and click any two component types to select everything between the two places where you click.
  3. With the option for Use Default Name selected, click OK to give the project a default name; or click Use Default Name to clear the check box, and then type a name in the Name box. The following New Project dialog box is displayed. The default location followed by the project name is automatically entered in the Location box, as shown in the following figure.

    New Project dialog box with default name

  4. If necessary, enter a new location or click the Browse button (...) to search for a destination folder on your computer.
  5. Click OK. An icon for the new project is added to the project tree. If you selected components to create at the same time, they are inserted in the new project with default names.

Note You must have information in both the Project Name and Location boxes. If you alter the project name in the Project Name box, the project name is automatically entered into the Location box at the end of the location string. If you alter the project name in the Location box, the Project Name box is not updated. If you alter the Project Name box again, an additional project may be added to the end of the string in the Location Box.


Project Properties

To open the Properties Window for a project, select the project icon and press F11. The Project Properties window contains the following tabs:

  • General tab

    Contains read-only information on the project file, and a text box where you can enter a description of the project for internal use.

  • Runtime Folders tab

    Displays the default folders to which run-time files are saved. To change the default folder for the entire project, click the button beside the top text box. You can change default folders for an individual component when you click Runtime Save As on the File menu or on the shortcut menu, or by editing the Runtime tab in the Component File Properties window.


Managing Components

This section gives step-by-step instructions for managing project components such as segments, styles, and audiopaths.

Several predesigned component files are included with DirectMusic Producer; you can add any of these files to a project. You can also add components that were saved as part of another project, or components such as wave files that are not yet part of any project.

Note The General MIDI DLS Collection (GM.dls) is installed along with the DirectMusic system components. By default, DirectMusic Producer uses the GM.dls collection for playback on all performance channels. The GM.dls collection is available to all projects at all times. You do not need to add it to the project tree.

GM.dls uses the GM/GS® Sound Set, which is the property of the Roland Corporation. For more information about legal issues related to using the GM.dls., click the copyright link at the bottom of this page. For any component you use, also read any copyright information contained on the Info Tab of the Properties window of the file.

The following procedures are covered:

  • To create new components
  • To add an existing component to the project tree
  • To copy or move a component from another project
  • To save a new version of a component
  • To change the name of a component file
  • To change the internal name of a component


To create new components

  1. Open the project by clicking on the icon in the project tree.
  2. On the File menu, click New.
  3. In the File Types list, select the component type or types you want to create. To select multiple types, hold down the CTRL key. To select a range of types, hold down the SHIFT key or drag the mouse across the list.
  4. Click OK to automatically select a new default name for the components, such as Band1 or Chordmap1.

    - or -

    Clear the Use Default Names option to enable the Name box, and enter a custom name. If you specify a custom name, it is applied to all components. Click OK.

  5. If prompted to create a new project, enter a name and location for the project, and click OK.

An icon for each new component is added to the project tree, and each component is opened in an editing window. For some components, a dialog box appears. You can set initial properties for the component in this dialog box.


To add an existing component to the project tree

  1. In the project tree, click the project to add the component to.
  2. On the File menu, choose Insert Files into Project. The following dialog box is displayed.

    Open File dialog box

  3. In the Files of type box, select the file type to add.
  4. In the Look in box, locate the folder containing the file to use.
  5. Double-click the file. The component you select appears in the project tree.

Note This procedure does not make a new copy of the file. Any modifications you make in the file will be reflected in other projects the file belongs to. For information on how to make a new copy, see To save a new version of a component.


To copy or move a component from another project

  1. Open the project that contains the component you want to copy.
  2. Right-click the component and drag it to the destination project icon. When the cursor is over a valid destination, you see a plus sign.
  3. Release the mouse button and click Copy or Move on the shortcut menu that appears. If you select Move, the component is deleted from the source project.


To save a new version of a component

  1. Double-click the component icon in the project tree to display it using the appropriate editing module.
  2. On the File menu, choose Save (component) As. The component's name is included on the File menu as part of the command.
  3. Locate the folder where you want the new file to be saved. If saving in the same folder, choose a new name. Click Save.


To change the name of a component file

  1. In the project tree, right-click the file name.
  2. Choose Rename. The file name is highlighted in the project tree.
  3. Type the new name for the file, up to 60 characters long, plus a three-character extension. Use the standard extension for the file type.

Note If the internal name already matches the file name without a three-character extension, changing the file name automatically changes the internal name so that it continues to match.


To change the internal name of a component

  1. Click the component's internal name in the project tree to highlight it.
  2. Click the internal name a second time to place the cursor in the highlighted area.
  3. Type the new name for the file, up to 15 characters long.

You can also change a component's internal name by using its Properties dialog box, available from the shortcut menu.


Component File Properties

To open the Properties Window for a component file in a project, select the top-level icon for the component and press F11.

Note This Properties window contains file properties, not component properties. To view or edit component properties, select the second-level icon of the component and open the Properties window. For more information, see the topics for each component type, such as Segment Properties.

The component Properties window contains the following tabs:

  • Design tab

    Contains read-only information about the component design file.

  • Runtime tab

    Contains information on the last run-time file that was saved, if any. To change the default folder, click the button beside the Folder text box. To change the default name, edit the Name box.

    You can also change the name and default folder when you click Runtime Save As on the File menu or on the shortcut menu.


Playback and Recording

This section describes how to use DirectMusic Producer for playing sounds and for recording playback to a file.

Capturing input from a MIDI device into an editing window is not covered here. For that topic, see Capturing MIDI Data.


Playback Devices

DirectMusic Producer content is played back through one or more output ports. The default output port is the Microsoft Synthesizer, which is installed on the system as part of Microsoft DirectMusic.

Other output ports that can be used with DirectMusic Producer include:

  • Hardware devices that are compatible with DirectMusic, referred to as DirectMusic hardware-accelerated devices. Such devices require Windows 98 Second Edition, Windows 2000, or later operating systems.
  • Software synthesizers that are compatible with DirectMusic.
  • Hardware devices that are not DirectMusic hardware-accelerated, such as sound cards that use FM synthesis to render MIDI sounds. Such devices will not work with DirectMusic playback under Windows Millennium Edition, Windows 2000, and later operating systems.

Typically, all sounds are played through a single port. However, it is possible to configure an audiopath so that different PChannels are played through different ports. For information about organizing PChannel assignments for playback devices, see Audiopath Designer.

DirectMusic Producer follows the General MIDI specification for sending instrument information to any playback devices you use. If you want to use MIDI hardware equipment for playback, the hardware must accept General MIDI patch changes. Most Windows-compatible sound cards are General MIDI compliant. If you do not have a General MIDI device, DirectMusic Producer cannot use the correct instrument sounds. In this case, it is recommended that all playback use the Microsoft Synthesizer.

See Also

  • Transport Options Toolbar.


Microsoft Synthesizer

The Microsoft Synthesizer is a software synthesizer that is installed with the Microsoft DirectX run-time components. The Microsoft Synthesizer eliminates the need for MIDI hardware other than a simple sound card, and provides Downloadable Sounds Level 2 functionality for all applications using DirectX to play DirectMusic Producer content. For an overview, see Synthesis and Downloadable Sounds.

One advantage of using the Microsoft Synthesizer is that it provides consistent playback on all systems, regardless of the brand or model of the sound card. Microsoft Synthesizer is included in the DirectX system components, which are part of the Microsoft Windows 98, Windows 2000, and later operating systems.


Voice Allocation

Each port has a different capacity for simultaneous playback of multiple voices, and each output port has a different limit for the number of voices it supports. The number of voices is the maximum number of discrete timbres the port can play at one time. For example, if six different instruments are each playing three notes, 18 voices are in use.

You can choose a maximum number of available voices for the Microsoft Synthesizer or another default synthesizer by setting the Number of Voices in the MIDI/Performance Options Dialog Box. You can also open the Properties window for a mix group in an audiopath and set the Voices Allocated for other synthesizers you are using. Assigning fewer voices to a port is a way of conserving computer resources.

The Voices Allocated setting can be any number of voices from 1 to 1000, but should be less than or equal to the total number of notes the assigned output port can support.

The Number of Voices or Voices Allocated setting has no effect on ports that are not DirectMusic-compatible, which always use a setting of 32 voices. All 32 PChannels are sent to the port. The output port must then use its own method to select which notes to omit when the number of voices required to play a sound exceeds the capacity of the port.

The default number of voices for each port group is 32. If an output port is fully compliant with DirectMusic, DirectMusic Producer sets the Voices Allocated setting to 32 voices, or to the maximum number of voices that the port can support, whichever is fewer. If the Port Configuration window shows a Voices Allocated setting for a port, you can select the port and enter a number in the Voices Allocated setting in the Port Group area, as long as the number does not exceed the maximum voice capacity of the port.

If an output port assigned to the port group is not specifically compatible with DirectMusic, the Voices Allocated setting is not displayed and cannot be edited. The Voices Allocated setting in the Port Group group box is dimmed, and the default setting of 32 voices is used for the port.

All output ports except the Microsoft MPU-401 (WDM) device support a Voices Allocated setting.

If you are using a DirectMusic-compatible output port, the port can use the priority setting you assign to each PChannel. If the port group exceeds its voice allocation, the PChannels with the lowest priority will be dropped so other PChannels can use their voices. If you are using a port that is not fully compatible with DirectMusic, the port uses its own method for deciding which voices in the file to omit from playback. For more information about assigning a priority to a PChannel, see PChannel Priority.

When using the Microsoft Synthesizer, any voices that are dropped from playback due to limited voice capacity are held for a short period (10 milliseconds) so they can be quickly faded out. This eliminates a clicking sound that occurs when notes are abruptly stopped. Holding notes this extra length causes the Microsoft Synthesizer to briefly exceed the number of voices allocated to it in the Port Configuration window. The expanded number of voices appear in the Synthesizer Status window, and the temporarily expanded number may be much higher than the number allotted.

Note The Voices Allocated setting that you choose is not saved in the run-time files. The setting is only for auditioning and testing playback.


Synthesizer Status Window

The synthesizer status window, shown in the following figure, displays information about the playback activity of DirectMusic-compatible output ports, including DirectMusic hardware-accelerated devices and compatible software synthesizers.

Synthesizer Status window

The following information about computer memory use is displayed in the window, from left to right:

  • Current percentage of available processing cycles used by the Microsoft Synthesizer.
  • Peak CPU usage by the Microsoft Synthesizer during the playback period.
  • Time during playback that the peak occurred.
  • Current number of voices being sent during playback to DirectMusic-compatible output ports.
  • Peak number of voices sent to DirectMusic-compatible output ports during the playback period.
  • Time during playback that the peak occurred.
  • Amount of memory used by the synthesizer.
  • Average latency, in milliseconds, over the last ten seconds. This value will almost always be greater than the Adjust Latency setting in the MIDI/Performance Options Dialog Box, because of additional latency in the sound card driver and audio stack.

The right section of the window represents only information being sent to DirectMusic-compatible output ports. When multiple DirectMusic-compatible output ports are in use, the window displays the total numbers for the combined activity of all compatible ports. If you are using output ports that are not DirectMusic-compatible, their playback activity is not reflected in the Synthesizer Status window, so the total number of voices actually playing through all output ports may be greater.

Click the Reset button to reset historical data such as peak values.

Note The Output Status Toolbar can show more playback activity than is indicated by the Synthesizer Status window. For example, a PChannel might play data that cannot be sent to the port because of limited voice allocation.


DLS Conditions Toolbar

Use the DLS Conditions toolbar, shown here, to audition playback on a DLS-compatible synthesizers using different configurations. You might do this, for example, to hear what your content sounds like on an earlier version of the Microsoft Synthesizer that does not support DLS Level 2.

DLS Conditions toolbar

The drop-down list contains a default configuration for the Microsoft Synthesizer and any other compatible synthesizers installed on your system.

Note The selection in the drop-down list does not set the output port; it only sets the configuration of the port in use. Normally this is the default synthesizer set in the MIDI/Performance Options Dialog Box. To send output to another synthesizer, you must edit the audiopath used by PChannels in a segment. For more information, see Edit Synth Settings Dialog Box.

To create a new configuration, click the Add Conditions button, the leftmost button in the figure above. The Edit Configuration Dialog Box is displayed.

After you have added a configuration, it appears in the drop-down list. You can choose this configuration for audition at any time by selecting it in the list.

The middle button in the figure is the Delete Conditions button, which deletes the selected configuration.

To edit an existing configuration, select it and click the rightmost button, the Edit Conditions button. You cannot edit or delete the default configuration of a synthesizer, but you can view it by using this button.


Edit Configuration Dialog Box

The following dialog box is displayed when you click the Add Conditions or Edit Conditions button in the DLS Conditions Toolbar. If the default synthesizer configuration is selected in the toolbar, you cannot make any changes in this dialog box; you must first create and select a new configuration.

Edit Configuration dialog box

You must enter a Configuration Name. This name will be displayed in the toolbar list and can be used to retrieve the settings.

The Queries box lists properties that you can set. To set a value, highlight the property in the list and enter a numeric value in the Value text box. Many of the values are Boolean; that is, either true or false. For example, SupportsDLS2 is true if the synthesizer supports DLS Level 2, and false otherwise. To set a Boolean value to false, enter 0. For true, enter 1 or some other nonzero value.


Cut Off and Invalidation of Notes or Waves

When playback is interrupted or transitions to a new component, notes are normally cancelled by an invalidation. Similarly, if playback of the segment containing a segment is interrupted while the wave is playing, or transitions to another segment before the wave ends, playback of the wave is halted abruptly.

DirectMusic Producer provides settings in many components so you can control whether a note or wave is cut off abruptly, or is allowed to complete its full duration.

For example, in a transition from one segment to another, if the first segment contains a long note, the note is normally cut off if the transition occurs during the note. Choosing the Don't Cut Off option for the note lets the note play its full value, even though the transition to the next segment has already begun.

When a segment plays to its end, any waves that extend beyond the end of the segment are allowed to finish. For example, if a wave that is 30 seconds in length is inserted at the beginning of a segment that ends after only 10 seconds, the wave will normally continue to play 20 seconds beyond the end of the segment. However, if playback of the segment is interrupted, or there is a transition to another segment, playback of the wave is halted abruptly. You can use the Don't Cut Off option to prevent this from happening.

An option for Don't Cut Off appears in the following places:

  • Variations/Flags Tab of the Note Properties window
  • Performance tab of the Wave Properties window
  • Transition Options Dialog Box
  • Boundary Tab of the Segment Properties window and the Segment/Motif Trigger Properties window
  • Secondary Segment Audition Options dialog box

Note Cut Off with Controller Curves

If a note or wave is not cut off while it has controller curves affecting it, the controller curve can continue to be in effect depending on settings you choose in the Reset tab for the curve. See Reset Curves.


Patch Numbers and Bank Select

Each instrument played by the synthesizer has a patch number used to identify the instrument when it is mapped to PChannels.

Because a single data byte is used to select the patch number in a program change, and only 7 bits in each data byte of a MIDI message are significant, a program change can select from a maximum of 128 instruments. To provide a greater choice, the MIDI specification allows for the use of up to 16,384 instrument banks, each containing up to 128 instruments.

To select an instrument from a different bank, the MIDI sequencer must first send a control change message called bank select. The two data bytes of this message are referred to as the most significant byte (MSB) and least significant byte (LSB), and they are combined to identify a bank. Once the bank has been selected, each subsequent program change selects an instrument from that bank.

The combination of the MSB, LSB, and patch number gives each instrument sound a unique identification. These numbers are displayed in several places in DirectMusic Producer, including the following:

  • In the DLS Designer Window
  • Next to the instrument name in the project tree
  • In the PChannel Properties window

If you assign a PChannel to play using an instrument that is not available—for instance, if a custom DLS collection has not been installed on another user's computer—the instrument plays silently.


Transport Controls

The Transport controls are used in the recording and playback of DirectMusic Producer files. The following figure shows a typical view of these controls.

When a component is playing, the toolbar looks like this:

The Transport controls include the following, from left to right in the figures:

  • Transport List
  • Play From Start Button
  • Play Button
  • Toggle Recording Button
  • Transition Button
  • Current Tempo Box
  • Tempo Modifier Button

When a component is playing, the Play From Start and Play buttons are replaced by the following:

  • Stop Immediate Button
  • Stop at Boundary Button

In addition to the main Transport controls, several other transport control sets are displayed on the Secondary Segment Toolbar.


Transport List

The Transport list enables you to select a components or subcomponents to play. Generally, a component is entered in the list as soon as you open it in an editing window. Click the down arrow to display the list.

The following figure shows the transport list with Pattern1 of the My Style.stp component ready to play:

The following table shows which components and subcomponents can be displayed in the Transport list. Only items shown in bold can appear in the list. Where a component name is shown in italic, you must select a subcomponent shown in bold to insert in the list.

Component | Subcomponents | Comments
Segment |  | Appears with a three-character extension of .sgp.
Style | Patterns, Motifs | Both patterns and motifs appear in the list with an extension of .stp.
DLS Collection | DLS Instruments, Waves |
Chordmap |  | Appears in the list with an extension of .cdp. You must choose a style to use for auditioning a chordmap. Do this on the Audition Tab of the Chordmap Properties window.

The component selected in the Transport list is the primary component used in playback. Use the Secondary Segment Toolbar to select additional components to play with the primary component.

See Also

  • Auditioning a Band


Play From Start Button

Play from Start button

The Play from Start button begins playback from the beginning of the component selected in the Transport List. The keyboard shortcut is ALT+<.

This button changes to the Stop Immediate Button as a component begins playing.


Stop Immediate Button

Stop Immediate button

The Stop Immediate button stops playback without waiting for a boundary to be reached. This button is displayed only while a component is playing. The shortcut key is ALT+< or SPACEBAR.

When multiple segments are playing, as when you play a primary segment and a secondary segment, click Stop Immediate to stop all segments. To stop playback of the primary segment only, press the CTRL key as you click the Stop Immediate button.


Play Button

The Play button begins playback from the current position of the cursor, or from the beginning if the selected component is not open in an editing window. The keyboard shortcut is ALT+> or SPACEBAR.

During playback, the Play button changes into the Stop at Boundary Button.

When you are using DLS Designer, the Play button functions just like the Play From Start Button.


Stop at Boundary Button

Stop at Boundary button

When you click the Stop at Boundary button, playback stops at the next bar, beat, or grid division, or immediately, depending on the performance boundary setting you chose in the Segment Properties window. The keyboard shortcut is ALT+>. This button is displayed only while a component is playing.

When multiple segments are playing, as when you play a primary segment and a secondary segment, click Stop at Boundary to stop all segments. To stop playback of the primary segment only, press the CTRL key as you click the Stop at Boundary button.

When you are using DLS Designer, the Stop at Boundary button functions just like the Stop Immediate Button.


Toggle Recording Button

Toggle Recording button

The Toggle Recording button enables recording from a MIDI input device when you edit with certain design modules. The keyboard shortcut is ALT+?. For information about recording music from a MIDI input device, see Capturing MIDI Data.


Transition Button

The Transition button enables a smooth audio transition between two components that contain a timeline, without stopping the playback of one to start another. The button is enabled only when a component is playing. The keyboard shortcut is ALT+".

Right-click to open the Transition Options Dialog Box. The button does not have to be enabled.

For information about creating transitions and using the Transition button, see Transitions.


Current Tempo Box

Current Tempo box

The Current Tempo box displays the tempo of the active component in beats per minute. You can use the box to edit the tempo of a component by entering a new tempo, in increments of .01 beats per minute, from 1 to 1000. The tempo is saved when you save changes to the component.

Only styles and segments have a tempo. A style has one tempo for all the patterns and motifs it contains. Segments can contain multiple tempos—as many as one per beat—and the value shown in the Current Tempo box reflects the tempo at the point where the cursor is located in the segment.

Other DirectMusic Producer components—for example, chordmaps, DLS collections, and bands—do not have tempo markings. When these components are active, the Current Tempo box is disabled.

When a style is the active component, you must select a pattern or a motif in the style window to see the style's tempo appear in the Current Tempo box.

If the active component is playing and you activate a different component, the Current Tempo box is not updated until you stop playback. Similarly, if you change the component in the Transport list while the active component is playing, you must click the Transition button to hear a new tempo take effect.

Secondary segments use the same tempo as the primary component, and therefore do not affect the Current Tempo box. For more information, see Primary and Secondary Segments.


Tempo Modifier Button

Tempo Modifier button

The Tempo Modifier button is used to audition the active DirectMusic Producer component at a different tempo without actually modifying the tempo in the component. The tempo shown in the Current Tempo box is multiplied by the percentage value in the Tempo Modifier button when the button is selected. To change the value, right-click the button to display the Alternate Tempo Dialog Box.

The default setting is 50 percent of the tempo displayed in the Current Tempo box, thus slowing the tempo down to one half its original value. For example, a component whose original tempo is 120 beats per minute (BPM) is played at 60 BPM when a tempo modifier value of 50% is used.

There is a delay of approximately half a second after clicking the Tempo Modifier button before playback is affected.


Alternate Tempo Dialog Box

The Alternate Tempo dialog box is displayed by right-clicking the Tempo Modifier Button. This dialog box enables you to change the modifier applied to the tempo when the Tempo Modifier button is active.

Alternate Tempo dialog box

In the Alternate Tempo text box, type or select a percentage. Possible settings range from 1 percent to 10,000 percent.


Output Status Toolbar

The Output Status toolbar displays information about which PChannels are playing and enables you to mute PChannels.

Each time a channel is used for playback, a button is added to the toolbar and remains there until you exit DirectMusic Producer. The button displays the number and name of the PChannel. As the channel plays, the button also displays a yellow output meter. The height of this meter reflects the volume of notes on the channel, and it is a brighter yellow when a note begins playing.

Right-clicking an output button displays the Edit PChannel Name dialog box, which enables you to change the name displayed on the button. PChannel names are global throughout the project.

The following figure shows channels 5 and 10 producing sounds.

Channel output shown in Output Status toolbar

To switch off a PChannel, click its button in the Output Status Toolbar. To turn on the PChannel, click it again.

To switch off all PChannels except one, double-click the button of the PChannel you want to play solo. To switch on all PChannels, double-click the button of a PChannel that is being played solo.

See Also

  • All Notes Off Button


All Notes Off Button

All Notes Off button

The Output Status Toolbar contains an All Notes Off button, sometimes referred to as a MIDI panic button. Use it to turn off all MIDI notes when some notes continue to play after you have stopped playback of a component. This can sometimes happen when MIDI note-off commands are interrupted.


Transport Options Toolbar

The Transport Options toolbar is used to set options for playback and MIDI setup. It consists of a drop-down list and four buttons, as shown in the following figure.

Transport Options toolbar

The Transport Options toolbar contains the following controls, shown from left to right in the figure:

  • Audiopath List
  • Toggle Metronome Button
  • Toggle Play Cursor Button
  • Toggle MIDI Button
  • MIDI/Performance Options Button

The following dialog boxes are displayed by using buttons on the toolbar:

  • Metronome Options Dialog Box
  • MIDI/Performance Options Dialog Box


Audiopath List

The Audiopath list, shown in the following figure, contains the Standard Audiopaths and any audiopath files in the project tree. You can select one as the default configuration for playback. This audiopath will be used within the DirectMusic Producer environment but is not saved as part of any file unless specifically added to the component in the project tree. For information on how to save audiopath configurations, see Audiopath Designer.

When you choose a default audiopath, the configuration is applied to all PChannels in a project, unless there is another audiopath file that is specifically set up to apply a different configuration to a PChannel.

Note Standard audiopaths are set to use PChannels 1 through 128 within DirectMusic Producer. Therefore, when using a standard audiopath, PChannels above 128 will be played silently. To use PChannels above 128, you must create a custom audiopath. Alternatively, a software developer can use DirectMusic API settings to access PChannels above 128 in a standard audiopath.


Toggle Metronome Button

Toggle Metronome button

Left-click the Toggle Metronome button to switch the metronome on or off.

Right-click the button to display the Metronome Options Dialog Box. By default, the metronome uses the set of drum or percussion sounds assigned to PChannel 10.


Metronome Options Dialog Box

Right-click the Toggle Metronome Button to display the following dialog box.

The Metronome Options window consists of the following settings:

  • Velocity

    MIDI velocity (volume) of the metronome sound for the first beat of each measure and for other beats.

  • Note Value

    MIDI pitch of the metronome sound for the first beat of each measure and for other beats. The pitches that are valid for a drum kit are shown with their instrument names, but those instruments will be used only if PChannel is the drum channel.

  • PChannel

    PChannel for the metronome. If you select a PChannel that has been assigned an instrument by the current band, the metronome sound will be played by that instrument. If the selected PChannel is 10, the chosen pitches must fall within the range D# 2 to D# 7 so that an available percussion sound is played.

  • Count-In Bars

    Sets the number of measures that the metronome plays before the beginning of playback or before recording begins. The pattern or sequence does not begin, and the play cursor does not begin moving, until after the count-in bars are completed. The default setting is Record Only, which plays count-in bars only as you begin recording. You can choose the All Playback option to have the metronome click during count-in bars for both playback and recording.

Note You can record material in a sequence track or pattern during the final count-in bar. For more information, see Extra Measures.


Toggle Play Cursor Button

Toggle Play Cursor button

The Toggle Play Cursor button controls the display of the thin, vertical, play cursor that moves across the editing window during playback. The play cursor indicates the playback location in a component at any given moment. It is also the Insertion Point for editing.

For components that include a timeline, the default setting is for the cursor to move across the editing pane during playback. When you click the Toggle Play Cursor button to turn off this option, the cursor remains stationary in the editing pane as it does in components that have no timeline.


Toggle MIDI Button

Toggle MIDI button

If you are using another music or sound application at the same time as DirectMusic Producer, click the Toggle MIDI button to temporarily switch off the MIDI connection for DirectMusic Producer, or to switch it on again. Switching off the MIDI connection enables you to use devices in the other application without conflicting playback output signals from DirectMusic Producer.


MIDI/Performance Options Button

MIDI/Performance Options button

Click the MIDI/Performance Options button to select and set up MIDI input hardware for recording music into DirectMusic Producer. The MIDI/Performance Options Dialog Box is displayed.


MIDI/Performance Options Dialog Box

Click the MIDI/Performance Options Button to display the following dialog box, which contains miscellaneous options for playback and MIDI input.

MIDI/Performance Options dialog box

This dialog box contains the following settings:

  • MIDI Input

    From the drop-down list, select the MIDI sound card that your MIDI input device is connected to.

  • Echo MIDI Input

    Select a MIDI input device to be echoed through the Microsoft Synthesizer. This can be the same as the MIDI Input device, or another device. Making selections from the Echo MIDI Input Device box enables you to hear the actual instrument sounds that will be used for playback. Select the Echo MIDI In check box to activate echoing, and select a range in the Output PChannels box to be used in echoing the input channels.

  • Adjust Latency

    Select a latency value between 0 and 9999 milliseconds for the Microsoft Synthesizer. Latency is the delay between the time a port receives a message and the time it has synthesized enough of a wave to play. You can adjust the latency to improve playback when the Microsoft Synthesizer has a great deal of information to process, such as when many DLS instruments are used at one time.

    Notes Settings below 10 milliseconds can cause the Microsoft Synthesizer to continue playing for several seconds after playback is stopped. You can use the All Notes Off Button to stop any notes.

    The actual latency shown in the Synthesizer Status Window is usually greater that the value set here, because of latency added by the sound card driver and audio stack.

  • Super Low Latency

    Select the check box to enable playback from keyboard input with very low latency, playing directly to the hardware specified in the Use This Sound Card drop-down list.

  • Persist to all Audiopaths

    Select the check box to ensure that the latency remains the same when the default audiopath is changed. If this option is not selected, the Adjust Latency value reverts to the default value when the audiopath is changed.

  • Number of Voices

    Set the desired number of simultaneous voices available for the default synthesizer and any synthesizers that support output to DirectSound buffers. For more information, see Voice Allocation.

  • Sample Rate

    Set the desired sample rate for the default synthesizer and any synthesizers that support output to DirectSound buffers.

  • Default Synthesizer

    Set the default synthesizer, used for all standard audiopaths and for the Default Synth option in all custom audiopaths. If the chosen default synthesizer does not support 128 different PChannels, then the standard audiopaths will use the maximum number of PChannels available. The synthesizer referenced by the Not Specified (Use DirectMusic Default) option is always the Microsoft Synthesizer.

Note Settings in the Adjust Latency and Audio Initialization Settings areas affect only the Microsoft Synthesizer and other synthesizers that support output to DirectSound buffers. For all other synthesizers, the only place to edit settings is in the Mix Group Properties window.

  • Download Status

    Select Download to download the entire GM.dls collection or all open custom DLS collections, or both, to the default audiopath, making available all instruments in those collections. If you select Unload, you must explicitly download instruments by using a script.


Secondary Segment Toolbar

The Secondary Segment toolbar contains controls for selecting and playing segments and motifs as secondary segments accompanying the component being played as the primary segment. The primary segment is controlled by using the Transport Controls. When you stop the primary segment, all secondary segments stop as well.

Secondary Segment toolbar

The toolbar contains one or more sets of controls, each consisting of a drop-down list of component names, and a Play From Start button. Components might not appear in the list until they have been opened in an editing window.

At the left of the first segment list is a counter that specifies the number of secondary segment control sets displayed. You can enter a new number up to 99 by typing or by using the up-down arrows. Depending on your computer screen size and display settings, you might not see all controls on the screen unless you undock and resize the toolbar. For information on undocking, see Rearranging Views.

The Play From Start button for a secondary segment functions just as it does for a primary segment. For information, see Play From Start Button.

When you click the Play from Start button for a secondary segment, the button changes to a Stop at Boundary Button. This button functions just as it does for a primary segment, that is, playback halts after reaching the performance boundary you set in the Segment Properties window.

The performance boundary setting also affects how quickly a segment begins playback when it is used as a secondary segment. To experiment with different settings for starting a secondary segment, you can temporarily override a segment's start boundary setting in the Secondary Segment Audition Options. Right-click the Play From Start button to display the Secondary Segment Audition Options dialog box.

See Also

  • Primary and Secondary Segments


Secondary Segment Audition Options

To set the secondary segment audition options for a component, right-click the Play From Start button beside the component name in the Secondary Segment Toolbar. The following dialog box is displayed.

Secondary Segment Audition Options dialog box

The audition options enable you to experiment with new performance boundary settings for starting playback of a secondary segment when it is used as a secondary segment. By setting audition options, you can temporarily override the segment's performance boundary setting without affecting the stored segment. Settings apply only to the segment whose Play From Start button you clicked to open this dialog box. You can set different audition options for all secondary segments.

Audition options are saved with bookmarked views. See Bookmark Controls.

This dialog box contains the following settings:

  • Performance Boundary

    Click Start at next marker to start the segment at a marker in the primary segment. From the drop-down list, select another boundary to use if there are no markers. The default setting is Segment's Default, which specifies that the performance boundary as set in the Segment Properties is not overridden. For more information, see Boundaries and Segment Alignment.

  • Controlling Segment

    Select this check box to make the segment controlling. For more information, see Controlling Segments.

  • Don't Cut Off

    Select this check box to ensure that notes continue playing to the end if invalidated. For more information, see Don't Cut Off.

  • Align Options

    Select a boundary within the segment where it starts playing if the normal start point falls in the past. For more information, see Boundaries and Segment Alignment.

  • Timing

    Select the timing option for playback. For more information, see Timing Options.


Wave and MIDI Export Toolbar

Sounds played in DirectMusic Producer can be saved as a wave file or MIDI file. Using this feature, you can record the simultaneous playback of multiple DirectMusic Producer components, including segments, patterns, and motifs.

The following toolbar is used to manage wave and MIDI export.

Wave and MIDI Export toolbar

© 2000-2001 Microsoft Corporation. All rights reserved.


Wave Export

Using the wave export feature, you can record sounds played from Segment Designer, Pattern Editor, and DLS Designer, as long as those sounds are sent through an output port that supports wave output, such as the Microsoft Synthesizer. The Start or Stop Export to Wave File button in the toolbar is enabled only when a mix group in the active audiopath plays to such an output port.

Note To use the wave export feature, you must play files on an audiopath that contains the FileOutput DMO. See File Output in an Audiopath.

Only one output port at a time is recorded; if an audiopath plays different mix groups to different ports, the first port in the list of mix groups is selected. All mix groups that are mapped to this output port are recorded.

Wave recording begins immediately when you click the Start or Stop Export to Wave File button. There may be a period of silence in the recorded file, depending on how soon playback begins after you click the button.


MIDI Export

The MIDI export feature can record sounds played from the Segment Designer and Pattern Editor modules, but not from DLS Designer. Sounds can be sent through any output port. Only MIDI commands are recorded in the MIDI file; data from wave tracks is lost.

After you click the Start or Stop Export to MIDI File button, MIDI recording does not begin until you begin playback. This eliminates silent measures at the beginning of the MIDI recording. MIDI recording can begin at the first note in the file, or with a lead-in measure. To set these options, right-click the Start or Stop Export to MIDI File button to open the Set MIDI Export Start Time Dialog Box.

MIDI recording stops automatically when playback stops.


Set MIDI Export Start Time Dialog Box

The Set MIDI Export Start Time dialog box enables you to select options for MIDI export before beginning to record. Right-click the Start or Stop Export to MIDI File button on the Wave and MIDI Export Toolbar to open the following dialog box.

Set MIDI Export Start Time dialog box

You can select one of the following options:

  • Save lead-in measure

    One empty measure, based on the time signature of the component currently in the Transport List, is inserted at the beginning of the recorded MIDI file.

  • Start at bar 1

    Playback is recorded without a silent beginning measure. The first measure of the performance is placed in measure 1 of the exported file.


Recording Continuous Controller Data

MIDI data exported to a MIDI file includes sounds that are affected by continuous controller curves. However, there is an exception when a controller curve has the Start From Current flag set in its Curve Properties window. Because the current value of a controller cannot be known until the synthesizer begins to play the curve, all curves are captured with their original start and end values, as if the Start From Current flag was not used.

For more information about using continuous controller curves, see Continuous Controllers.


Capturing a Performance

You can use the MIDI export and the wave export features simultaneously to record playback output from DirectMusic Producer. However, based on the limits outlined in Recording Continuous Controller Data, some sound might be omitted from the recording in one or both of the exported files. Because MIDI recording waits for playback to begin and wave recording does not, start MIDI recording first.


To capture a performance

  1. If necessary, select an audiopath in the Audiopath list that contains the FileOutput DMO. See File Output in an Audiopath.
  2. To export to a wave file, click the Set Wave Filename button and choose a directory where the exported file will be saved.
    or, to export to a MIDI file, click the Set MIDI Filename button and choose a directory where the exported file will be saved.
  3. Type a name in the File Name box and then click Save.
  4. To insert a silent measure in a MIDI file, right-click the Start or Stop Export to MIDI File button to display the Set MIDI Export Start Time Dialog Box, select Save Lead-in Measure, and click OK.
  5. Click the Start or Stop Export to Wave File button, or the Start or Stop Export to MIDI File button. If you are exporting both a wave file and a MIDI file, click the Start or Stop Export to MIDI File button first, and then click the Start or Stop Export to Wave File button.
  6. Use the Transport Controls and Secondary Segment Toolbar to begin playback of components.
  7. When the performance is finished, click the Stop Immediate button, or the Stop button. MIDI recording stops automatically.
  8. Click the Start or Stop Export to Wave File button to end recording of the wave file.


Boundaries and Segment Alignment

DirectMusic Producer enables segments to be started and stopped at appropriate rhythmical points, called performance boundaries. When a segment is cued to play, it can play from the beginning, or from another predefined start point. The start point can begin playing at the soonest appropriate moment, or it can be aligned with a past boundary so that the segment can start playing immediately but still be in time with the music. When a segment is stopped, it can either stop immediately or continue playing to the next suitable boundary.

Boundary, alignment, and timing options are set in the following places:

  • Boundary Tab of the Segment Properties window

    The inherent settings for a segment, used as the default for the segment, whether it is used as a primary segment, as a secondary segment, or as a component in a transition. These settings are saved as part of the segment file.

  • Boundary tab of the Motif Properties window

    Settings for a motif, which is usually played as a secondary segment.

  • Segment/Motif Trigger Properties window of a trigger in a Segment Trigger Track.

    Settings for segments cued by the Segment Trigger Track. These settings override the inherent segment properties.

  • Secondary Segment Audition Options

    Temporary settings used for experimentation. These settings override the inherent segment properties while the segment is being played in the DirectMusic Producer environment.

  • Transition Options Dialog Box

    Temporary settings used for experimentation with transitioning between components. These settings override the inherent segment properties while the source, destination, and transitional segments are being played in the DirectMusic Producer environment.

The following section contains information about boundary, alignment, and timing properties common to segments, segment triggers, and secondary segment audition. Information about transition options is similar but is documented separately in the Transition Options Dialog Box topic.

The Boundary tab of the Segment Properties window, shown in the following figure, contains boundary, alignment, and timing options.

The Secondary Segment Audition Options dialog box and the Segment/Motif Trigger Properties window are similar, but Segment's Default is included in the drop-down list, in place of a separate Use Segment's Default option. The Secondary Segment Audition Options dialog box also contains a Controlling Segment check box.

Options are organized into the following groups:

  • Performance Boundary Options
  • Align Options
  • Timing Options
  • Don't Cut Off


Performance Boundary Options

Performance boundaries are used to ensure that segments start and stop at appropriate rhythmic points. If the performance boundary of a segment is the measure, for example, and the application is using performance boundaries when cueing segments, the segment will start playing only on a measure boundary within the current primary segment. Similarly, if the application stops the segment on a boundary—as is the case when you click the Stop at Boundary Button in DirectMusic Producer—it will not stop until it reaches the end of a measure.

Applications can set their own performance boundaries for segments, or they can use the boundaries saved in the run-time files. They can also choose to ignore performance boundaries and start or stop a segment immediately.

Performance boundary options are shown in the following illustration of the Boundary tab on the Segment Properties window.

Performance Boundary options

The Performance Boundary group contains the following labels and settings:

  • Start at next marker

    Playback of the segment starts when the next marker is reached in the marker track of the primary segment.

Note Variation switch points in a style pattern also serve as boundary markers when the style is used in a segment. See Variation Switch Points.

  • If no markers, start:

    This label is shown only if Start at next marker is selected. If no marker is available in the primary segment, either the segment's default boundary or a boundary selected from the list is used.

  • Use Segment's Default

    If no markers are available, or if Start at next marker is not selected, use the default boundary for the segment. This option is disabled in the Segment Properties window, where the selection in the boundary list is the default boundary for the segment.

  • Boundary List

    Select a boundary to use if other options are not selected or are not available. The following table lists the effects of the settings in the drop-down list.

Boundary | Effect
Segment's Default | The segment's default boundary is used. This setting is not available in the Segment Properties window, because a default boundary must be chosen there.
Immediate | The segment starts or stops immediately. This is the default setting when a segment is created.
Grid | The segment starts at the next grid division in the current primary segment, or stops at its own next grid division.
Beat | The segment starts at the next beat in the current primary segment, or stops at its own next beat.
Barline | The segment starts at the beginning of the next measure in the current primary segment, or stops at its own next measure.
Align to Beat | The start of the segment is aligned with the most recently played beat in the current primary segment, and the segment begins playing at the next Enter Switch Point or the next boundary specified in the Align Options.
Align to Barline | The start of the segment is aligned with the most recently played measure boundary in the current primary segment, and the segment begins playing at the next Enter Switch Point or the next boundary specified in the Align Options.
Align to Segment | The start of the segment is aligned with the beginning of the current primary segment, and the segment begins playing at the next Enter Switch Point or the next boundary specified in the Align Options.
End of Segment | The segment starts playing when the end of the current primary segment is reached.
End of Segment Queue | The segment is placed at the end of the primary segment queue.


Align Options

The settings grouped as Align Options are used in conjunction with the Align to Beat, Align to Barline, and Align to Segment Performance Boundary Options. When one of these boundaries is selected, the normal start point of the segment is aligned to a rhythmical boundary in the past. As a result, the segment can only start playing at some point after its normal start point. The Align Options selection specifies the next boundary at which the segment can start playing. This setting is used only if no Enter Switch Point is present in the part of the segment that lies in the future.

For example, suppose that two segments, A and B, have the same time signature. Segment A is playing as the primary segment. The performance boundary for segment B is Align to Measure. Now B is cued as a secondary segment at a point halfway through a measure in Segment A. The Align to Measure setting ensures that the start point of B is aligned with the previous measure boundary in A, so that the two segments will be in time with one another when B starts playing. If B has no Enter Switch Points and the align option for B is on any Beat, B starts playing on the first available full beat.

The following table shows the effect of the various options.

Align Option | Effect
at any Time | The segment plays as soon as possible.
on any Grid | The segment plays at the next grid division.
on any Beat | The segment plays at the next beat.
on any Barline | The segment plays at the next measure.


Timing Options

The following settings are grouped as Timing Options.

Option | Effect
Quick Response | The segment is immediately cued. For example, if the Performance Boundary setting for the segment is Beat, the segment begins playing at the next beat that is heard. Messages currently prepared for playback but not yet played may be invalidated. Music may drop out for a short time if there are any conflicts among the instrument patch settings in the components being played.
After Prepare Time | The segment is cued after any messages already prepared for playback have played, typically about a second from now. For example, if the Performance Boundary setting for the segment is Beat, the segment begins playing at the next beat that is heard after prepare time has elapsed. All messages currently prepared for playback will play normally.


Don't Cut Off

If this option is selected, any notes in the segment that are playing when the segment stops are not cut off but continue playing to their normal length.


Transitions

When playback moves from one component to another, a transition occurs. As a component is playing, you can select a destination component in the Transport List and click the Transition Button to switch playback from the playing component, or source, to the destination.

A transition can occur over a measure or more, and can use chords, patterns, and other elements from the source or destination components, or both. In this case, DirectMusic Producer creates a transition segment that plays between the source and destination components. The transition can also be based on an existing segment that is neither the source nor the destination.

When there is no transition segment, the change from one segment to the next is abrupt without any extra steps to make the change in sound smoother.

You can transition between any components that contain a timeline: that is, segments, patterns, and motifs. A chordmap can be a source component but not a destination. To appear as the source component in the Transport list, a chordmap must have an audition style selected in the Chordmap Properties window, because a chordmap uses the musical patterns of a style to provide material for playback.

DLS collections do not include a timeline and cannot be used with the Transition button. If you select a DLS collection in the Transport list, the Transition button is disabled.

Options for transitions are set in the Transition Options Dialog Box. To display this window, right-click the Transition button. The button does not have to be enabled when you click it.

Note Transition options are for audition purposes only, and are not saved in any of the components you use in a transition. At run time, transition options are defined by the application or script.


Transition Options Dialog Box

To open the Transition Options dialog box, right-click the Transition Button. The dialog box, shown in the following figure, contains settings for Transitions.

Transition Options dialog box

The dialog box contains the following groups of settings:

  • Transition Options: Performance Boundary
  • Transition Options: Align Options
  • Transition Options: Don't Cut Off
  • Transition Options: Response Time
  • Transition Options: Transition Segment
  • Transition Options: Transition Pattern


Transition Options: Performance Boundary

In the Performance Boundary group box in the Transition Options Dialog Box, you can set options that determine the point within the source component where the transition begins.

In this discussion, source means the component that is playing when the transition starts, and destination means the component being transitioned to.

  • Transition at Next Marker

    If this option is selected, the transition will take place when playback reaches the next marker in the Marker Track of the source segment. If no marker is coming up in the source segment, the transition takes place according to the setting in the drop-down boundary list, or the default setting if the Use Segment's Default check box is selected.

  • Use Segment's Default

    If this option is selected, the performance boundary used for the transition is the one specified on the Boundary Tab of the Segment Properties window for the source segment. If Transition at Next Marker check box is selected, any markers in the source segment take precedence over this boundary.

  • Boundary

    The selection in the drop-down list determines the timing of the transition if the Use Segment's Default check box is not selected. If the Transition at Next Marker check box is selected, any markers in the source segment take precedence over this boundary. The choices shown in the following table are available.

Boundary | Effect
Immediate | The transition starts immediately.
Grid | The transition starts at the next grid division in the source component.
Beat | The transition starts at the next beat in the source component.
Barline | The transition starts at the beginning of the next measure in the source component.
Align to Beat | The start of the destination component is aligned with the most recently played beat in the source component, and the destination component begins playing at the next possible boundary specified in the Align Options.
Align to Barline | The start of the destination component is aligned with the most recently played measure boundary in the source component, and the destination component begins playing at the next possible boundary specified in the Align Options.
Align to Segment | The start of the destination component is aligned with the beginning of the source component, and the destination component begins playing at the next possible boundary specified in the Align Options.
End of Segment | The transition starts when the end of the source component is reached. When a pattern transitions to another component, the End of Segment boundary setting behaves the same as the Barline boundary setting.
End of Segment Queue | The transition to the destination component starts when the end of the currently playing segment queue is reached. You can queue segments by using the Transition button while this boundary is selected. Clicking the Stop button clears the segment queue. When a pattern transitions to another component, the End of Segment Queue boundary setting behaves the same as the Barline boundary setting.

The Align to Beat, Align to Barline, and Align to Segment settings are valid only for direct transitions; that is, transitions that do not use the Transition Segment or Transition Pattern options. The effect of these settings is to immediately synchronize the rhythm of the destination component with that of the source component, without waiting for a suitable boundary to occur.

For example, suppose Segment A is intended to transition immediately to Segment B in response to an event in a game. If the Barline boundary is chosen, the transition does not take place until the end of the current measure in Segment A is reached, which might happen later than desired. Using the Align to Barline boundary, the application can force the transition to take place immediately, but still line up the measure boundaries of the two segments. Of course, the beginning of Segment B must fall in the past in order for this to happen. The first point within Segment B where it is actually heard is specified by the Align Options setting. See Transition Options: Align Options.

See Also

  • Boundaries and Segment Alignment


Transition Options: Align Options

The Align Options settings are valid only for the Align to Beat, Align to Barline, and Align to Segment performance boundaries. See Transition Options: Performance Boundary.

When the start point of a destination component is aligned with a past boundary in the source, the Align Options setting specifies the boundary in the destination component where it is to begin playing. The available options are shown in the following table.

Align Option | Effect
at any Time | The transition occurs immediately.
on any Grid | The transition occurs at the next grid in the destination segment.
on any Beat | The transition occurs at the next beat in the destination segment.
on any Barline | The transition occurs at the next measure in the destination segment.

This boundary is used only if no enter switch point is present in the part of the destination component that lies in the future. If an enter switch point is available, the Align Options setting is ignored and the component starts at the switch point. For more information on switch points, see Marker Track.

See Also

  • Boundaries and Segment Alignment


Transition Options: Don't Cut Off

If this option is selected, any notes in the source component that are playing when the transition starts are not cut off but continue playing to their normal length. For more information, see Don't Cut Off.


Transition Options: Response Time

Two choices are available for specifying when a transition takes effect:

Option | Effect
Quick Response | The transition is executed immediately. For example, if the Performance Boundary setting for the transition is Beat, the transition takes place at the next beat that is heard. Messages currently prepared for playback but not yet played may be invalidated. Music may drop out for a short time if there are any conflicts among the instrument patch settings in the components being played.
After Prepare Time | The transition is executed after any messages already prepared for playback have played, typically about a second after the Transition button is pressed. For example, if the Performance Boundary setting for the transition is Beat, the transition takes place at the next beat that is heard after prepare time has elapsed. All messages currently prepared for playback will play normally.


Transition Options: Transition Segment

Select a segment from the Transition Segment drop-down list to play as a transition before the destination component starts playing.

You cannot select both a transition segment and a transition pattern. If the Transition Segment drop-down list is disabled, select None in the Transition Pattern drop-down list.

A transition segment can take its chords, band, style, and other settings from either the source segment or the destination segment, depending on the Transition Flags set in the properties window Flags Tab for tracks in that segment. For example, if the Current in Source Segment flag is set on the style track, the transition segment will play a pattern from the current style in the source segment.


Transition Options: Transition Pattern

The Transition Pattern group box contains options for playing a pattern as a transition between two other components.

You cannot select both a transition pattern and a transition segment. If the options in the Transition Pattern group box are disabled, select None in the Transition Segment drop-down list.

  • Transition Pattern List

    Select a pattern type from the Transition Pattern drop-down list to play at a transition before the destination component starts playing.

    The pattern is drawn from the source segment, unless it is an Intro, in which case it is drawn from the destination. If you select End and Intro, an End pattern is taken from the source and an Intro from the destination. If the component from which a pattern should be taken does not contain a matching pattern, or is itself a pattern rather than a style-based segment, no pattern will play.

  • Custom Text Box

    If you choose Custom from the pattern list, enter a value in the range from 100 to 199 in the Custom text box. This value corresponds to the value assigned to custom embellishments in the Pattern Properties window.

  • Play Options

    Select either Play Entire Pattern or Play 1 Bar of Pattern to specify the length of the transition.

  • Modulate Check Box

    Select the Modulate check box to create a smooth cadence by using chords from the source or destination components, or both, as the transition plays. There are several possible outcomes, depending on the type of transition pattern selected:

    • Modulation when using Intro pattern

      When you use an Intro transition pattern, the Modulate option has no effect and the transition uses the first chord in the destination segment.

    • Modulation when using Fill, Break, Regular, or Custom pattern

      When you select Fill, Break, Regular Pattern, or Custom for the transition pattern, chords are drawn from the source component, and the Modulate option may affect which chords are used. If the source component is a segment containing a chordmap, a modulation is created using Cadence Chords from the chordmap of the segment. Leaving the Modulate option unselected creates a cadence using the current chord in the source segment.

      If you select the Long check box, the transition plays one cadence chord in each measure. If the destination chord in the chordmap is preceded by only one cadence chord, the cadence chord plays in the first measure.

      If you do not select the Long option, the transition plays all the cadence chords in the first measure.

    • Modulation when using End pattern

      When you select End for the transition pattern, chords are drawn from the source component and the Modulate option may affect which chords are used. If the source component is a segment containing a chordmap, a modulation is created using cadence chords from the chordmap of the segment. Leaving the Modulate option unselected creates a cadence using the current chord in the source segment.

    • Modulation when using End and Intro patterns

      When you use End and Intro as the transition pattern, the transition behaves the same way as for an End transition. However, the transition adds an extra measure to play an intro embellishment from the style of the destination segment, using the first chord in the destination segment for this. No additional modulation chords are used between the Intro and the beginning of the destination segment.

      If the destination is a pattern, there is no Intro embellishment to use. If possible, a transition segment is created using an End embellishment from the source component, and the destination pattern begins as soon as the boundary is reached, without an Intro preceding it. If the Modulate option is selected, the End transition uses chords from the source component.

      If the source component is a pattern, there is no End embellishment to use. If possible, a transition segment is created containing an Intro embellishment from the destination component, but there is no End embellishment preceding the intro. The Intro begins as soon as the boundary is reached. If the Modulate option is selected, it has no effect on the chords used for the Intro. Only the first chord in the destination component is used.

    If you select the Long option, a transition plays both cadence chords in the first measure and a signpost chord in the second measure. Otherwise, the transition skips the first cadence chord and plays the second cadence chord and a signpost chord in the first measure.

    If a transition uses cadence chords from the chordmap of a source component, the key signature of the source component affects which cadence chords are selected. This requires that the source component be a segment containing a chordmap.

    If certain cadence chords in the source segment cause less of a change when moving to the destination component—for example, they share more notes with the chord of the destination component—then those cadence chords have priority over other available cadence chords.

    If the component supplying transition chords is a segment that contains a chordmap track and a chordmap, the Modulate option causes cadence chords to be drawn from the chordmap.

    If a component supplying modulation chords is a segment that does not contain a chordmap, the Modulate option has no effect and the transition is created using the chord playing in the segment.

    If the component supplying transition chords is a pattern, and thus contains no chordmap, the Modulate option has no effect and only the pattern's composition chord is used.

    When the Modulate option is selected and chords are drawn from a chordmap, DirectMusic Producer creates a cadence in the transition using a signpost chord that has one or more cadence chords preceding it. If there are no signpost chords with cadence chords, the behavior is the same as if the Modulate option had not been selected, and the chords playing in the source component or the first chord in the destination component are used.

    When more than one sequence of cadence chords is available for a signpost chord, one of the cadences is selected at random.

  • Transition to Nothing Check Box

    When the Transition to Nothing check box is selected, there is no destination component, and playback stops after the transition pattern is played. This option is available only when End is selected in the Transition Pattern drop-down list.

  • Long Check Box

    Select the Long check box to create a two-part transition. The first part is drawn from a pattern in the source segment, and the second part uses the pattern in the Transition Pattern list.

    The Long option works only when the source component is a style-based segment. Otherwise it is ignored, and the transition consists only of the selected transition pattern.

    When Long is selected, you can select either Play Entire Additional Pattern or Play 1 Bar of Additional Pattern. This choice specifies how much of the source pattern is played.

    If the selected transition pattern is an Intro and the destination component is a segment, the second half of the long transition uses the first chord of the destination component as it plays an Intro embellishment from the style in the destination segment. If the destination component is a pattern, the pattern begins playing immediately in the second half of the transition, using the pattern's composition chord.


Creating Content

This section provides detailed information about designing components. The following topics are covered:

  • Components and Design Modules
  • Note Entry and Editing
  • Continuous Controllers
  • Extra Measures
  • Chord Properties
  • Segment Designer
  • Band Editor
  • Style Designer
  • Pattern Editor
  • DLS Designer
  • Chordmap Designer
  • Audiopath Designer
  • Toolgraph Designer
  • Script Designer


Components and Design Modules

Each of the DirectMusic Producer design modules contributes a type of component to the compositions in your project. Some components are a part of every composition, while others are optional. This section describes the DirectMusic Producer components and how they relate to the composing process and interrelate to create interactive music.

A project can contain the types of components shown in the following table.

Component | File extensions (Editable/Run-time) | Description | Design Module
Audiopath | .aup/.aud | Setup for routing playback through synthesizers, buffers, and effects. | Audiopath Designer
Band | .bnp and .bnd | Collection of instrument mappings, including PChannel, pan, and volume settings. | Band Editor
Chordmap | .cdp/.cdm | Collection of variable chord progressions. | Chordmap Designer
Container | .cop/.con | Container for multiple components. | Edited only in the project tree.
DLS Collection | .dlp/.dls | Collection of downloadable sounds available as instrument sounds. | DLS Designer
Script | .spp/.spt | Scripted routines. | Script Designer
Segment | .sgp/.sgt | Main framework for organizing multiple music elements—MIDI sequences, waves, styles, chords, and bands—in a playable form. | Segment Designer
Style | .stp/.sty | Collection of melodic and rhythmic patterns with variations. Also includes a list of band choices. | Style Designer
Toolgraph | .tgp/.tgr | Configuration of tools to manipulate data before it reaches the synthesizer. | Toolgraph Designer
Wave | .wvp/.wav | Digitally recorded (sampled) sound. | Wave Editor

In the previous table, each component type is shown with two file extensions. The first extension is used when the file is under construction in DirectMusic Producer (authoring mode), and appears as part of the file name in the project tree. The second extension is used when the file is ready to play in an application or Web page (run-time mode). DirectMusic Producer can load files in both forms; it converts a run-time file into an authoring file. For more information, see Delivering Content.

Components are not necessarily saved in individual files. For example, a container can be saved as part of a segment file, and a band can be part of a style or segment.

Some components contain subcomponents, as shown in the following table.

Subcomponent | Component | Description | Design Module
Pattern | Style or Segment | Collection of individual instrument parts containing melodic and rhythmic figures that can adjust to different chords. | Pattern Editor or Pattern Track
Motif | Style | A type of pattern that serves as a melodic figure, usually brief, to layer over other music. | Pattern Editor
Embellishment | Style | A type of pattern designed to serve a special purpose such as to introduce or end a segment. | Pattern Editor
Sequence | Segment | MIDI notes and data for fixed playback of notes. | Sequence Track in Segment Designer

Note Sequences, and patterns in pattern tracks, are not visible in the project tree.

As you edit components, the editing changes are reflected in other components that refer to them. For example, if you have made changes to a style in Pattern Editor, and then play a segment that uses the style, the segment draws on the new patterns, even if they have not yet been saved.

See Also

  • Concepts


Note Entry and Editing

The notes and rhythms that make up a piece of music are stored in the following places:

  • Sequence Track of a segment
  • Pattern Track of a segment
  • Patterns in a style

Note entry and editing for each of these locations is done in Note Editing Windows.

You can use several methods for note entry:

  • Import a MIDI File

    Import a standard MIDI file as a pattern or segment. For more information, see Creating Patterns and Motifs in the Project Tree and Importing a MIDI File as a Segment.

  • Record MIDI

    Enter music by using a MIDI device. For more information, see Capturing MIDI Data.

  • Enter notes using the mouse and computer keyboard

    Enter individual notes by hand. For more information, see Entering Notes by Using the Mouse and Computer Keyboard.

  • Copy notes from elsewhere by using the Clipboard

    Copy and paste notes from the same window or another editing window or from MIDI sequencing software outside DirectMusic Producer. See Moving and Copying Notes by Using the Clipboard.

After you enter notes into Pattern Editor or a sequence track, you can select and edit the notes individually or in groups.


Note Editing Windows

Segment Designer and Pattern Editor provide editing windows, within the main editing window of the module, that contain the musical note content of a part in a Sequence Track, Pattern Track, or pattern in a style. By default, these windows are strips similar to other track strips, however, they have a maximize button at the right edge. Click this button, or double-click any part of the strip, to open the editing window. To close it, click the minimize button or double-click the name of the part.

The following figure shows a maximized editing window for a part in a Pattern Track.

Part editing window, piano roll view

The window contains the following elements:

  • Instrument button

    Displays the current instrument assignment on this PChannel. Click to change the instrument assigned to this PChannel in the current band. When editing a style pattern, the current band is the one selected for audition of the style. When editing a Sequence Track or a Pattern Track, it is the last band that played.

    If no instrument has yet been assigned to the PChannel, click the Band button and select Insert New Instrument. This is equivalent to editing the PChannel Properties in Band Editor. For more information, see PChannel Instrument Assignment.

  • Band button

    Displays the following menu.

    Command | Effect
    Insert New Instrument | Assign an instrument to the PChannel.
    Open Band Editor | Edit the current band in Band Editor.
    Locate Band | Highlight the current band in the Band Track. Not enabled in Pattern Editor.

  • Zoom buttons

    Click to adjust the vertical size of the pitch guide and note editing region.

  • Variation Buttons

    Click to activate and deactivate variations. To display or place notes in the editing region of a pattern, you must activate at least one variation in the part. These variation buttons do not appear in sequence track windows, because sequences do not have variations.

  • Pitch guide

    At the left side of the part editing window is a pitch guide in the form of a keyboard. This area can also be viewed as a grand staff. See Pitch Guide Views.

  • Special tracks

    Continuous controller track, and, for patterns, a variation switch point track. See Continuous Controllers and Variation Switch Points.

  • Note editing region

    The editing region is aligned horizontally with the timeline, with colored vertical lines indicating the following:

    • Heavy vertical lines represent barlines.
    • Medium vertical lines represent beats.
    • Thin vertical lines represent Grid Divisions.

    Notes are represented by blue rectangles, and have the following properties:

    • Pitch, represented by the vertical position of the rectangle. In hybrid notation view, the pitch may be further defined by an accidental.
    • Start time, represented by the horizontal position of the left edge of the rectangle.
    • Duration, represented by the width of the rectangle.
    • Velocity, represented by the height of the rectangle.


Pitch Guide Views

A note editing window can be viewed in two ways: as a piano roll, or in a view known as hybrid notation because it combines elements of the piano roll and conventional musical notation.

In the piano roll view, the pitch guide is a keyboard containing all pitches from C0 through G10. Each pitch has its own row of notes in the editing region, and every note fits within a row.

All the C notes on the piano keys are labeled. For percussion channels using instruments from the default DLS collection, the keys are also labeled with the name of the instrument assigned to each pitch. For example, the following figure shows a sequence part on PChannel 10 that uses the standard drum kit from the default DLS collection.

Pitch guide in sequence track

If the instrument is from a custom DLS collection, each key is labeled with the name of the wave file used for each pitch. If different waves are assigned to layers in a region, they are all listed in order on the piano keys, starting with the wave assigned to the first layer.

In the hybrid notation view, the pitch guide is a grand staff containing treble and bass clefs. The pitch of a note is shown by its vertical position relative to the grand staff, either within a row or on a line. Accidentals are used in front of notes to further define their pitch, just as in standard music notation.

The following figure shows a part in a sequence track using hybrid notation.

Part editing window, hybrid notation view

The hybrid notation view makes it possible to fit a greater range of notes in a compact vertical area so the information can be viewed without scrolling up or down.

To switch between piano roll view and hybrid notation view, click a part or sequence track and press H; or right-click and select a view from the shortcut menu, as shown in the following figure.

Note editor view menu

See Also

  • Pitch Names and MIDI Numbers


Grid Divisions

To aid in the placement of notes and the cueing of events on boundaries, the beat in a time signature can be subdivided into grid divisions, more simply called grids. Grids are displayed in the editing windows of sequence and pattern parts.

The timeline in a segment does not show any grid divisions, nor are grid divisions shown on tracks where objects must be inserted on beat boundaries, such as the band and style tracks.

The default 4/4 time signature uses a sixteenth-note grid, or four grids per beat. This value can be changed in the Set Time Signature and Grid Dialog Box. Display this dialog box by clicking the time signature button in the Time Signature Properties window, the Pattern Track Properties window, or the Style Designer Window.

See Also

  • Boundaries and Segment Alignment


Note Editing Cursors

The appearance and behavior of the cursor changes according to where you point on a note's rectangle. The cursor appearance reflects the type of edit you can make.


Move Cursor

When you point to the bottom half of a note grid space, the Move cursor is enabled, as shown in the following illustration.

The Move cursor moves a note vertically, in half-step increments, and horizontally, in grid increments.

You can also use the arrow keys to move notes while you hold the mouse button. The UP ARROW and DOWN ARROW keys move the note in half-step increments, and the LEFT ARROW and RIGHT ARROW keys move the note in grid increments.


Velocity Cursor

When you point to the top half of a note's grid space, the Velocity cursor is enabled, as shown in the following illustration.

You can use the Velocity cursor to drag the top edge of a note to change its velocity value, from 1 to 127, in increments of 5.

For finer editing, you can use the arrow keys on the keyboard to change the velocity while you hold the mouse button. The UP ARROW and DOWN ARROW keys change the value of the velocity in increments of 1.


Start Time Cursor

When you point to the left edge of a note's rectangle, the Start Time cursor is enabled. It is characterized by the vertical line on the right side of the cursor, as shown in the following illustration.

Start time cursor

You can use the Start Time cursor to drag the left edge of a note in grid increments. This moves the beginning of the note to an earlier point.

For finer editing, you can use the arrow keys to change the start time while you hold the mouse button. The LEFT ARROW and RIGHT ARROW keys change the start time in increments of one tick.


End Time Cursor

When you point to the right edge of a note's rectangle, the End Time cursor is enabled. It is characterized by the vertical line on the left side of the cursor, as shown in the following illustration.

End time cursor

You can use the End Time cursor to drag the right edge of a note in grid increments.

For finer editing, you can use the arrow keys to change the end time while you hold the mouse button. The LEFT ARROW and RIGHT ARROW keys change the end time in increments of one tick.


Pitch Names and MIDI Numbers

DirectMusic Producer uses two systems for naming pitches. Both combine a pitch name and an octave number.

The first system follows the standard naming convention used throughout the MIDI industry. In this system, the pitch letter is followed by the octave number. The pitch called C5 represents middle C, equal to MIDI note 60. The pitch an octave above middle C is called C6. The pitches between C5 and C6 (moving up the scale from C5) are D5, E5, F5, G5, A5, and B5.

The other system for naming pitches is unique to DirectMusic Producer and is used to name chord roots and design the structure of chords. In this system, 2 C is a reference pitch that can be considered a mid-range pitch for an instrument that is playing. The pitches between 1 C and 2 C are 1 D, 1 E, 1 F, 1 G, 1 A, and 1 B. Only four octaves are available for constructing chords, 1 C through 4 B. Only two octaves are available for creating chord roots, 1 C through 2 B. For more information, see Chord Properties.

The following table shows examples from the full range of MIDI note names, MIDI key numbers, and traditional names.

MIDI Note | MIDI Key Number | Traditional Names
G10 | 127 | g''''''
C10 | 120 | c''''''
C9 | 108 | c'''''
C8 | 96 | c''''
B7 | 95 | b'''
C7 | 84 | c''' 2nd ledger line c
C6 | 72 | c'' 3rd space c
B5 | 71 | b'
C5 | 60 | Middle c c'
C4 | 48 | Small c
C3 | 36 | Great C
C2 | 24 | Contra C Double C CC
C1 | 12 | Subcontra C
C0 | 0 |


Capturing MIDI Data

You can use an external MIDI device, such as a MIDI keyboard or wind controller, to add notes to an instrument part in a pattern or a sequence track. Your MIDI device must be connected to a sound card on your computer, and the device must be selected in the MIDI/Performance Options Dialog Box.

As you record from a MIDI device, you can hear audible MIDI feedback using the instrument settings in the PChannel assigned to the part or track that you are recording into.

Note To eliminate confusion caused by delays in the audible MIDI feedback, no MIDI feedback is provided when recording in real time to a high-latency output port. When you record to a style pattern, the new notes are played as audible notes only when the pattern loops during the recording period.

MIDI data can be captured in two ways:

  • Step-Time Recording

    Notes are entered using the same default length for each note, and the recording advances by the length of one note each time you enter a new note.

  • Real-Time Recording

    A fixed tempo is applied as you enter notes. The length of the notes is recorded as you play and is determined by how long you hold down the keys on the MIDI device.


Step-Time Recording

You can use a MIDI device and step-time recording to enter notes and chords at any speed. As you record in step time, the same default length for each note is used.

The default note length in a component is the same for note entry using the mouse and using step-time recording. It is determined by the Snap To setting used in the timeline of the component. For instance, if you use a Snap To setting of Beat, then each new note you enter has a default length of one beat, as determined by the time signature of the component. The default setting for Snap To is Grid. For information on setting the grid division in a style, see Setting a Style's Time Signature and Grid. For information on setting the grid division in a segment, see Time Signature Properties.

The default velocity is 100 for all notes you enter using step-time recording.


To insert new notes by using step-time recording

  1. Maximize a sequence track or pattern part editing window. If you are editing a pattern part, be sure the variations into which you want to place notes are active. For more information, see Note Editing Windows and Part Variations.
  2. Click the Toggle Recording Button.
  3. Press keys on the MIDI device. Keys pressed at the same time are entered in the same step-time division in the editing region as a chord. Keys pressed separately are entered in subsequent step-time divisions.

Press the right arrow key while holding keys on the MIDI keyboard to advance the time cursor and increase the length of the notes. For example, if the step-time division as defined by the Snap To setting is a quarter note, you can insert a whole note by holding a key on the MIDI device, pressing the right arrow key three times, and releasing the key on the MIDI keyboard.


Real-Time Recording

When you enter notes using real-time MIDI recording, the length and velocity of the notes are determined by how you play them on the input device.

After recording in real time, you may want to adjust the position and duration of notes by Quantizing.


To insert new notes by using real-time recording

  1. Maximize a sequence track or pattern part editing window. If you are editing a pattern part, be sure the variations into which you want to place notes are active. For more information, see Note Editing Windows and Part Variations.
  2. Click the Toggle Recording Button.
  3. Click the Play Button.
  4. Play the MIDI device. All pressed keys are recorded with the timing and velocity you generate through the input device.

When you record to Pattern Editor in real time, the pattern loops repeatedly, as it does during playback, until you click the Stop Immediate Button. Each time the pattern loops, notes you play on the MIDI device are recorded in the pattern and may cover notes already in the pattern. You can avoid covering notes by clicking a Variation button to activate or deactivate a variation.


Entering Notes by Using the Mouse and Computer Keyboard

To enter notes in a sequence track or pattern, first maximize the editing window for the part. See Note Editing Windows.

In a pattern part, a row of 32 variation buttons appears at the top of the maximized editing window. Before inserting notes, you must activate one or more variations by selecting variation buttons.

Several methods are available for inserting a note:

  • Place the Insertion Marker by clicking on or near the desired location of the note. Adjust the marker's location by using the arrow keys. Press the INSERT key.
  • While pressing the CTRL key, click the desired location of the note.
  • Right-click the desired location of the note. The insertion marker is placed, and a shortcut menu is displayed. Click Insert Note.

When you enter a new note, it is selected and highlighted in red. The insertion marker moves to the next position.


Selecting Notes

Several operations in Note Editing Windows, including copying to the Clipboard, changing note properties of notes, and Quantizing, affect all selected notes. By default, selected notes are red and unselected notes are blue. You can change these colors in the Part Properties window.

The following methods can be used to select notes:

  • To select a single note, click it.
  • To select multiple notes, hold the CTRL key while clicking.
  • To select a range of notes, hold the SHIFT key and click the first and last notes in a series. All notes within the time and pitch range of the first and second notes are selected.
  • To select all notes in a region, hold down the left mouse button and drag a rectangle around the notes.

In addition, you can select ranges of notes in note editing windows, including notes in several parts simultaneously, by selecting the part strips and dragging on the timeline. For more information, see Selecting Regions in Segments and Patterns.

To cancel all selections, click an empty space in the editing region.


Moving and Copying Notes by Using the Clipboard

Using the Cut, Copy, and Paste commands, you can move and copy notes within the same editing window or to another pattern or sequence part, even in another design module. You can also copy notes to and from other MIDI sequencing applications.

When you use the Paste command to place notes in an editing window, the notes are pasted beginning at the beat division where the Insertion Point is.

You have two options for how notes are pasted:

  • Merge

    The contents of the Clipboard merge into the beats in the part or sequence. No existing notes or MIDI data are replaced. This is the behavior when pasting by using CTRL+V.

  • Overwrite

    The contents of the Clipboard overwrite data in the region they fill. If you paste in a full measure of notes, all existing notes in the destination measure are replaced.

Notes from a single track or part strip are pasted into all selected tracks or part strips, or into the active strip if no strips are selected. The destination editing window does not have to be maximized.


To cut or copy notes to the Clipboard

  1. Select the notes to cut or copy. See Selecting Notes.
  2. Press CTRL+C to copy the notes.

    - or -

    Press CTRL+X to cut the notes.

    - or -

    Right-click one of the selected notes and click Cut or Copy on the shortcut menu.


To paste notes from the Clipboard

  1. Select the destination parts or tracks. Make sure no other tracks are selected. The notes will be pasted to all selected tracks, or to the active track if no tracks are selected.
  2. Move the Insertion Point to the beat where you want the first pasted note to appear. You can do this by clicking in the destination editing window. Right-click if you want to use the shortcut menu for pasting.
  3. Click Paste on the shortcut menu, then click Merge or Overwrite.

    - or -

    Press CTRL+V. The Clipboard content is merged with existing notes.


To copy notes from more than one note editing window at a time

Notes can be copied to the Clipboard from multiple parts in patterns and sequence tracks by using the strip selection buttons and the timeline. See Selecting Regions in Segments and Patterns. Data copied in this way can be pasted to multiple note editing windows.

To select a destination for the notes, click the selection buttons for a number of tracks or parts in the destination component equal to the number of tracks or parts that were copied from the source. The vertical order of the note editing windows is maintained: the material is pasted from the highest source window to the highest destination window, from the second highest source window to the second highest destination window, and so on. If the number of sources is greater than the number of destinations, the data from the lower sources is lost.

Multiple selected windows do not have to be next to each other. You can copy material from noncontiguous source windows and paste it to any destination windows.


Moving and Copying Notes by Dragging

You can move and copy notes within an editing window by using a drag-and-drop operation.


To copy notes by dragging

  1. Select one or more notes. See Selecting Notes.
  2. Position the cursor over one of the notes so that it becomes a Move Cursor.
  3. Press the CTRL key and hold down the left mouse button.
  4. Drag the notes and release. The original notes are left unchanged, and the copied notes retain most of the properties of the original notes. However, the pitches and beat position of the copied notes may be different, depending on where you drag them.

When you use the CTRL key and drag feature to copy notes in Pattern Editor, notes are copied only into the variations they originally belonged to and which are open and displayed. The variations must have their buttons selected in the Variations strip. For example, if a note that belongs to Variations 1 and 3 is selected and copied to Variations 1 and 2 using the CTRL key and drag feature, the new note is copied only into Variation 1.


To move notes by dragging

  1. Select one or more notes. See Selecting Notes.
  2. Position the cursor over one of the notes so that it becomes a Move Cursor.
  3. Hold down the left mouse button.
  4. Drag the notes and release.


Editing Notes by Dragging

You can use the mouse to edit a note or group of notes in the following ways:

  • Drag the top edge of a selected note with the Velocity Cursor to change the velocity of all selected notes.
  • Drag the left edge of a selected note with the Start Time Cursor to change the start time of all selected notes.
  • Drag the right edge of a selected note with the End Time Cursor to change the duration of all selected notes.


Editing Notes by Using the Properties Window

In the Sequence Track, you can edit notes in the Sequence Properties Window. In Pattern Editor, you can use the Note Properties window. To open the Properties window, select one or more notes and press F11, or right-click on a selected note and click Properties on the shortcut menu.


Quantizing

Using a process called quantizing, you can adjust the start time and duration of notes in a part, so that they conform to a specified division of the beat.

Quantizing is often applied to notes that are recorded using real-time MIDI recording. When you record using real-time MIDI input, the start time and duration of a note may not be placed on the beat and beat division with exact precision. Quantizing moves the notes into more precise positions and regularizes their duration. For example, you might choose a group of notes that sound uneven and round them to the nearest 16th note. The start and end points of the notes are moved forward or backward to the nearest 16th-note division of the beat.

You can use quantizing to change any notes regardless of whether they were entered using the mouse, using MIDI recording, or by importing a MIDI file.


To quantize notes in a part or sequence

  1. Maximize a sequence track or pattern part editing window. If you are editing a pattern part, be sure the variations from which you want to select notes are active. For more information, see Note Editing Windows and Part Variations.
  2. Select notes. Skip this step if you want to quantize
  3. Press CTRL+Q. Alternatively, you can right-click any note in the selected group, or any area of the note editing window if you want to quantize all notes, and then select Quantize on the shortcut menu. The Quantize Dialog Box appears.
  4. Select options for quantizing the selected notes and click OK.


Quantize Dialog Box

This dialog box contains options for quantizing notes in a pattern or a sequence track.

Quantize dialog box

The dialog box contains the following options:

  • Quantize Target

    Select a button to apply quantizing to selected notes, to all notes in the instrument part, or to all notes in the style pattern.

  • Change

    Select Start Time(s) to adjust the start time of notes, and select Duration(s) to adjust the length of notes.

  • Divide Beat into

    Select a value for resolution of target note boundaries. For example, if you select the eighth-note, each beat is divided into eight parts, and target notes are adjusted to those divisions.

  • Strength

    Set a percentage value for how completely quantization is applied. A setting of 100 percent moves the notes immediately to the specified resolution. A setting of 50 percent moves the values half the distance to the resolution. This adjustment is made each time the dialog box is closed by using OK. If a setting of 50 percent is selected again, quantizing moves the values half the remaining distance.


Continuous Controllers

You can place data into a sequence or pattern part for many types of MIDI continuous controllers, including the following:

  • Standard MIDI types
    • Pitch Bend
    • Mod Wheel
    • Volume
    • Pan
    • Expression Controller
    • Sustain
  • Special types for the Microsoft Synthesizer
    • Ext Effect (Reverb) Depth
    • Chorus
  • RPN and NRPN controller types

    Registered parameter number (RPN) controllers have been assigned a function by the MIDI Manufacturers Association. Nonregistered parameter number (NRPN) controllers can be used for different functions by different manufacturers. Types are identified by two seven-bit values combined to form a value in the range from 0 through 16,383.

    The following registered parameters are given descriptive labels in the Add New CC Track dialog box when their numbers are selected in the RPN/NRPN Type box. See To insert a continuous controller curve.

    RPN | Description
    0 | Pitch Bend Range
    1 | Fine Tuning
    2 | Coarse Tuning
    3 | Change Tuning Program
    4 | Change Tuning Bank

    For information on other registered parameter types, see the MIDI specification.

  • Additional Types

    For a complete list, see the Add New CC Type dialog box, which is displayed when you select Add New CC Type from the shortcut menu for a CC track.

Note The Microsoft Synthesizer supports only the six standard types and the two special types. For information about the Ext Effect (Reverb) Depth and Chorus controllers, see Special Controller Types.

Inserting continuous controller data into a sequence track or pattern part affects the playback of MIDI notes the same way as using a MIDI controller device, such as the pitch bend wheel, during a live performance using a MIDI instrument.

You place continuous controller data in a sequence or pattern part by creating a CC track and inserting a graphic curve to represent the timing and magnitude for the controller. The following illustration shows a pitch bend (PB) controller operating during four beats in a pattern part.

Pitch bend controller

The illustration shows a curve with a shaping rectangle around it. You can shape and stretch the curve by dragging the small squares in any direction.

You can also copy the curve to the Clipboard and paste it into another CC track of the same type, or elsewhere in the same track. As with notes, the Paste command applies to all selected tracks of the appropriate type, or to the active track if no tracks are selected.

The pitch bend curve affects the notes that play while the curve is active. When designing pattern parts, you can activate one or more variations, and insert a curve that affects only the notes in active variations.

If you use continuous controller data to control volume or pan settings, it affects settings for volume and pan in any bands using the same PChannels. See Conflicts Between Bands and Continuous Controllers.

You can insert multiple curves of the same type in a CC track. For example, you can shape the vibrato used for a part by inserting a Mod Wheel curve in one measure, and inserting several other Mod Wheel curves in later measures.

You can also insert a reset curve at the end of a segment or pattern, which sets the Mod Wheel curve back to zero or some appropriate level that will be used if the segment or pattern loops, or if playback transitions to a new component. See Reset Curves.


To insert a continuous controller curve

  1. In Pattern Editor or the Sequence Track, maximize the editing window for a part. A strip labeled CC appears below the note editing region.
  2. Right-click the CC strip and click Add New CC Track on the shortcut menu.
  3. In the Add New CC Track dialog box, select a type of controller from the drop-down list and click OK. Note that if the word "Create" does not appear beside a type in the list, the part already contains a track of that type. If you select RPN or NRPN, a box labeled RPN/NRPN Type is displayed. Select the registered or nonregistered parameter number for the controller.
  4. Maximize the CC strip. A track for each controller type in the part is displayed.
  5. If editing a pattern, select one or more variations.
  6. Press INSERT, or right-click the CC track for the desired controller type and click Draw Curve on the shortcut menu.
  7. Drag the cursor in the CC track to enter a graphic curve across the width of the window.
  8. Shape the curve by using the mouse or the Curve Properties window.


Reset Curves

For any CC track in a segment or pattern, you can insert a curve at the end of the track to act as a reset curve for curves of the same type occurring earlier in the track. This sets the controller back to an appropriate level for looping or transitioning to a new component.

For example, you can shape the vibrato of a part by inserting several Mod Wheel curves in different measures of a pattern. As each curve is reached during playback, the Mod Wheel setting is changed by the curves. If you place a final Mod Wheel curve in the last measure of the track with a value of zero, playback can loop back to the beginning of the pattern, or transition to some other component, without the Mod Wheel controller affecting any notes.

You can also use settings in the Curve Properties window to specify that if playback of a segment or pattern ends before a reset curve is reached, the controller resets itself to an appropriate setting. See Reset Tab.


Special Controller Types

Two special controller types are provided for use only with the Microsoft Synthesizer:

  • 91 Ext Effect (Reverb) Depth
  • 93 Chorus

Other synthesizers might have a different use for curves with these identification numbers.

You can use these two controller types to control over time the volume level of a buffer in an audiopath. Typically you would use a buffer with reverb or a chorus effect and adjust its volume relative to other buffers in the same mix group, to augment or diminish the effect.

The most convenient way to use one of these controllers is in conjunction with the Standard Stereo and Reverb audiopath. In this audiopath, output goes through two buffers: a Standard Stereo buffer using no effects, and a Standard Reverb buffer using a reverb effect. Using this audiopath, any sequence or pattern containing an Ext Effect (Reverb) Depth controller plays with the mixture of normal stereo sound and reverb sound changing over time. As the volume of the reverb buffer increases, the mix of the reverb increases.

For example, the following illustration shows a segment sequence with an Ext Effect (Reverb) Depth controller curve extending over six measures. Using the Standard Stereo and Reverb audiopath, the reverb increases during these measures.

Continuous controller 91

For more information, see Reverb Send and Chorus Send Buses.


Curve Properties

The Properties Window for a curve enables you to make adjustments to the placement of continuous controller data and its effect.

The Curve Properties window always contains the following two tabs:

  • Curve(s) Tab

    Contains settings for the start and end time, the start and end MIDI controller values, curve shape, and options for flipping the curve horizontally or vertically.

  • Reset Tab

    Contains settings for the default value that the curve should reset to if it is interrupted during playback. This prevents the curve from affecting notes when playback begins again, or if playback transitions to a different component.

In addition, the Curve Properties window for a curve in a pattern contains the following:

  • Variations Tab

    Contains settings for which variations the curve applies to.

When multiple selected curves have different properties, these properties are displayed as dashed lines, except for check boxes, which are gray if some selected curves have the property selected and others do not. Any changes made in properties apply to all selected curves.


Curve(s) Tab

The Curve(s) tab in the Curve Properties window contains settings for the timing, values, and shape of one or more selected curves in a CC Track.

Curve(s) tab in Curve Properties window

Use this tab to adjust the following settings in one or more selected curves:

  • Start Time, End Time, and Duration

    The start time, end time, and duration, expressed as a combination of bar, beat, grid, and tick values. If you edit the start time, the duration remains unchanged, and the end time adjusts automatically. If you edit the end time, the start time remains unchanged and the duration adjusts automatically. If you edit the duration, the start time remains unchanged, and the end time adjusts automatically.

  • Start Value and End Value

    Value of the controller at the beginning and end of the curve. Intermediate values are determined by the Type (shape) of the curve. For RPN 0 (Pitch Bend Range), values are in semitones and cents. The DLS Level 1 specification defines pitch cents as 32-bit logarithmic values. See the specification from the MIDI Manufacturers Association for details.

  • Start From Current

    If you select the Start From Current option, the current value for the controller type at the time the curve starts replaces the Start Value. For example, if another curve in the segment has previously set the controller to a different value, then that value is used in place of the Start Value shown in this Properties window.

  • Type

    Shape of the curve. Possible values are Sine, Logarithmic, Exponential, Instant, or Linear.

  • Flip Vertical or Flip Horizontal

    Click one of these buttons to flip the curve. In some cases this has the effect of changing the Type.

  • Additive Curve ID

    Identifier that groups this curve with other curves.

    Two or more curves on the same controller can clash with each other, causing controller values to fluctuate. Additive curve IDs can be used to prevent this clash. Curves that have different additive curve IDs will be summed when played simultaneously. For example, if a segment plays a pitch bend curve with ID 0, and at the same time a secondary segment plays a pitch bend curve with additive curve ID 1, the values of the two curves will be added together as they are played.

    Additive curve ID is not supported for all curves. The following types use the setting: transpose, pitch bend, volume, expression, pan, filter, mod wheel, chorus, and reverb.


Reset Tab

The Reset tab in the Curve Properties window contains settings for resetting the controller when playback of a segment or pattern containing the curve is interrupted or transitions to a different component. Unless it is reset, the controller setting remains at the level it had reached when interrupted, and may affect the playback of PChannels in other components.

The Reset tab is shown in the following figure.

Curve Properties Reset tab

The tab contains the following settings:

  • Enable Reset

    Select the check box to enable resetting of the controller.

  • Reset Value

    Set the value to which the controller will be reset upon interruption. For most types of curves, such as pitch bend or modulation wheel, the default setting of zero is best because it completely cancels the curve's effects. For some types of curves, such as volume or expression, a setting of zero would create silence and may not be appropriate.

  • Reset Duration

    Set the duration of the time within which a reset will take place upon interruption, starting from the beginning of the curve. If playback is interrupted during the duration period you choose, the reset value is applied to the curve.

    Several options for choosing reset duration are shown in the following table.

    Reset Duration | Effect | Notes
    Same as curve duration. | If the curve plays without interruption, the reset value in the Reset tab is not applied. | Useful when a curve ends with a final level that is appropriate for further looping or transitions.
    Greater than curve duration. If playback is interrupted before a reset curve or another curve is reached, the reset value in the Reset tab is applied. Typically, the reset duration lasts until the last beat and tick before the next curve. Useful if a curve does not end at a final value for looping, and a reset curve sets the final value. For example, if a segment has a Volume curve that ends with a very high setting, a reset curve may be needed to bring the volume back down to a normal level for segment looping.

    Also useful when there are multiple curves in the same track. For example, in a segment containing a series of volume curves, the reset duration of each curve can extend to the last beat and tick before the next curve in the track. Note that extending the reset duration of one curve beyond the beginning of another curve can cause conflicts.
    Less than curve duration. | If playback is interrupted during the curve but after the reset duration, the value in the Reset tab is not applied. | Useful when a note toward the end of a curve is not cut off by a transition, and you want the curve to reset before that note begins.

    Choosing too long a reset duration value can have unexpected results. If the value would cause the reset to occur after the end of the pattern or segment, it is possible to have multiple curves of the same controller type that reset to different values. In this case, it is impossible to know which would take precedence.

    Choosing too short a reset duration value can also have unexpected results. For example, if the duration is set to 0 bars, 0 beats, 0 grids, and 1 tick, it means the curve would reset only if the performance was interrupted within 1 tick of the start of the curve; that is, immediately.


Variations Tab

The Variations tab in the Curve Properties window for a curve in a pattern contains one check box for each possible variation in the pattern part. Select the box for each variation to which the curve applies.

Note When you create a CC curve, it is assigned to variations selected in the Variation Buttons for the part. To edit the set of variations for which the curve is valid, you must use this tab.


Extra Measures

You can insert extra measures before and after the regular measures in a sequence or pattern part. A single extra pick-up measure can be placed at the beginning, and any number of extension measures can be placed at the end. The pick-up measure is played only when the segment containing the measure is first played. Extension measures are played only when the segment plays to the end and stops. Extra measures are not heard when the segment loops.

Extra measures are not numbered in the timeline and are shown with a darker shading. The notes are displayed with hash marks.

The following illustration shows a pick-up measure that occurs before measure 1 of a pattern part.

To add extra measures to a sequence track or part in a pattern, first open the Properties window for the track or part.

For a sequence part, click the Change button in the Sequence Track Properties window. The following Set Extra Bar Length dialog box appears.

Extra Bar Length dialog box

For a pattern part, click the Length button in the Part Properties window. The following Set Part Length dialog box appears.

Set Part Length dialog box

In either of these dialog boxes, select Display pick-up bar to add a pick-up measure. To add extension measures, enter a value in the Extension bars text box, or select a value by clicking the up-down arrows. Click OK.

You can also add an extension measure by extending the length of any note in the previous measure.

You can enter notes in extra measures just as in any other measure.

To record notes into a pick-up measure by using Real-Time Recording, first set at least one count-in bar in the Metronome Options Dialog Box. You can record pick-up notes in the last count-in bar before regular recording begins.

Note DirectMusic Producer allows only one second of pick-up notes to be heard. If notes are more than one second before the start of the segment or pattern, they are clipped or silent during playback. However, applications can extend the prepare time in the DirectMusic playback of your file, making notes audible that occur more than one second before the beginning of a file. For more information, see DirectX Audio Help in the DirectX SDK documentation.


Chord Properties

The information in this section applies to chord properties in all components. Chords occur in the following places in Microsoft DirectMusic Producer:

  • Signpost List, Chord Path Window, and Chord Palette in Chordmap Designer
  • Chords for Composition track in Pattern Editor
  • Chord Track in Segment Designer

The Properties Window for a chord contains the following two tabs:

  • Chord/Scale Tab

    Used to design a chord.

  • Chord Inversion Tab

    Used to specify the inversions that are allowed for each chord in the four chord levels.

Note In Chordmap Designer, the Properties window for a chord is called Chord Scale/Inversion Properties on the title bar. Elsewhere it is called Chord Properties. The two windows are identical.


Chord/Scale Tab

The Chord/Scale tab is used to design a chord. The tab contains four chord keyboards on the left side and four scale keyboards on the right side. You can use the four levels of chord structure to combine multiple layers of chord tones, and create chords with as much complexity as you need. The following illustration shows the Chord/Scale tab in the Chord Properties window.

Chord Properties Chord/Scale tab

DirectMusic Producer uses a unique system for naming notes in chords. In this system, 2C is a reference pitch that can be considered a mid-range pitch on any instrument that is playing. The pitches between 1C and 2C (moving up the scale from 1C) are 1D, 1E, 1F, 1G, 1A, and 1B. Only four octaves are available for constructing chords: these octaves range from 1C to 4B. Only two octaves are available for creating chord roots: these octaves range from 1C to 2B.

The Chord/Scale tab contains the following elements:

  • Chord root name

    The root name of a chord is determined automatically from the bottom note in the level 1 chord. Click the up-down arrows next to the chord root name box to choose a different root. This transposes all notes up or down throughout the Chord Properties window. You can also set a new root by selecting a note in the yellow area of level 1.

    You can choose any root note in the lower two octaves of level 1, ranging from 1C to 2B. Octave 1 represents the 12 pitches from C to B directly below C2. Octave 2 represents the 12 pitches from C to B directly above C2, inclusive. For more information, see Chord Structure Guidelines.

  • Chord type

    Enter a name or abbreviation to identify the chord type. In the preceding illustration, M9 (#11) represents a major 7 chord with added 9th and #11 extensions.

  • Root Name Notation

    Click Sharps to select standard notation or Flats to select enharmonic notation. By default, sharps are used for chord root names. When you insert chords into a segment using the Compose Chords Button, the enharmonic spelling reverts to sharps.

  • Chord structure

    Four on-screen keyboards are used to define the chord structure for each level. Four octaves are shown, with the lower two octaves in yellow. Click a note to select it; selected notes are red.

    Each keyboard represents a different chord level, and each level must contain a chord of either three or four notes. Chord structures on each level typically consist of steps 1, 3, 5, and optionally 7, of a seven-note scale. This means that steps 2, 4, and 6 of the scale are not used in the chord. For more information, see Chord Structure Guidelines and Using Complex Chords.

    While most simple chords use only a single chord structure that is repeated on all four levels, you can use levels 2, 3, and 4 to add different notes as the upper extensions, such as a 9ths, 11ths, or 13ths, of the chord in level 1. You can also use levels 2, 3, and 4 to design a complex polychord constructed from four independent chords. You can set instrument parts in a pattern that uses the different chord levels; as a part encounters a chord, it uses the chord and scale on the level to which it is assigned. For information about assigning chord levels in a pattern, see Part Properties.

    It is recommended that you use either a three-note or four-note chord in each of the four levels of the chord properties. You are not required to use traditional chords consisting of a root, 3rd, 5th, and 7th from a standard scale. The underlying scale should use seven notes. Standard practice is to construct chords of alternating notes of whatever scale you choose as the underlying scale for the chord. However, other chord and scale arrangements can be used. The 7th step of the scale can be used as an added tone for the chord, or left as a scale tone.

  • Scale configuration

    The keyboards on the right are used to specify which scale to use for melodic lines with each chord level. The chord scale for each level must contain exactly seven pitches. In most situations, the tones of the chord are included as steps 1, 3, 5, and 7 of the scale. You can create a scale that does not contain the tones of the chord, but most patterns will behave unpredictably as they encounter the chord. Having too few notes may result in the notes within patterns being omitted, and having too many notes may result in scale notes not being used.

    Pitches that you select for a scale are shown in red, while unselected pitches are white or black. A pitch that is a chord tone but not in the scale is blue, alerting you that you may want to include the tone in the scale, because it is part of the chord.

  • Enable MIDI input

    Click one of these buttons to enable pitch entry on a MIDI keyboard at that level. For more information about using MIDI input, see Transport Options Toolbar.

  • Play this level

    Click one of these buttons to play the chord and scale at that level.

  • Play all levels

    Click this button to play all four chords in order, beginning at level 1.


Duplicating Chords and Scales on Multiple Levels

Options for duplicating chords and scales from one level to another are available on the shortcut menu. Right-click on a chord level to open the menu.

The following options are available:

  • Lock All Scale Levels

    When selected, scales at all levels remain fixed when the root chord changes. When not select, scales change to match the root chord.

  • Auto-Sync Level 1 to All

    When selected, changes made to level 1 are automatically applied to other levels.

  • Copy Chord To, Copy Scale To, and Copy Chord + Scale To

    Copy the chord or scale, or both, to the level selected on the submenu, or to all other levels. The submenu is shown in the following figure.

    Copying chords or scales

  • Clear

    Clear the chord and scale for a level, or all levels, as selected on the submenu.


Chord Inversion Tab

In the Chord Inversion tab of the Chord Properties window, shown in the following figure, you specify the inversions allowed for each chord in the four chord levels.

Chord Properties Chord Inversion tab

The Chord Inversion tab contains the following elements:

  • Chord root name and type

    Read-only display of these values, which are set on the Chord/Scale Tab.

  • Chord keyboards

    Read-only display of the chord at each level in its original root position. The notes are set on the Chord/Scale Tab.

  • Next

    Button for each chord level, used to display the next possible inversion. Depending on whether you enter a three-note or four-note chord in a level, you can choose from three or four inversions for the chord. Each tone in the chord can serve as the bottom note of an inversion. This includes the root inversion of the original chord.

  • Inversion keyboards

    Read-only display of a possible inversion for the chord in each level.

  • Legal?

    Check box for each chord level. If selected, the currently displayed inversion is enabled. You cannot deselect this check box for the root position of the original chord.

  • Play

    Button for each chord level, used to play the displayed inversion.

Transposing some notes in a part up or down an octave when a chord is encountered inverts the chord. By default, all possible inversions are allowed. However, if you determine that some inversions are unacceptable, you can disable them by using this tab. In this case, the Inversion Boundaries of the part are temporarily overridden so that the notes are not transposed, and certain inversions of the chord are prevented.

For example, consider a part that contains a row of notes in a scale: C5, D5, E5, F5, G5, A5, and B5. This part has an upper inversion boundary of G6, and a lower inversion boundary of G4. The notes transpose up or down to conform to various chords. If notes in a chord exceed the inversion boundaries, these notes transpose an octave up or down as required. The following table shows the behavior of the part as it encounters various chords.

Original notes | Chord encountered | Inversion boundary exceeded | Resulting notes | Comments
C5, D5, E5, F5, G5, A5, B5 | 2GM7 | None | G5, A5, B5, C6, D6, E6, F#6 | All notes are within boundaries.
C5, D5, E5, F5, G5, A5, B5 | 2AM7 | G6 | A5, B5, C#6, D6, E6, F#5, G#5 | G#6 exceeds the high boundary. G# and the F# below it are transposed down.
C5, D5, E5, F5, G5, A5, B5 | 1GM7 | None | G4, A4, B4, C5, D5, E5, F#5 | All notes are within boundaries.
C5, D5, E5, F5, G5, A5, B5 | 1FM7 | G4 | F5, G4, A4, Bb4, C5, D5, E5 | F4 exceeds the low boundary and is transposed.
C5, D5, E5, F5, G5, A5, B5 | 2BM7 | G6 | B5, C#6, D#6, E6, F#5, G#5, A#5 | A#6 and G#6 exceed the high boundary. A#, G#, and the F# below it are transposed down.

In the preceding table, two chords exceed the inversion boundaries and some notes are transposed. Any note that exceeds the boundary transposes up or down an octave. In addition, the note directly below the transposed note also transposes.

The 2 B M7 chord in the table causes the part to play with F#, G#, and A# transposed down. This creates the sound of a second inversion B major 7 chord. You can disallow this inversion, so that the part continues to play the F# in the same octave as the notes that precede it. The part then plays B5, C#6, D#6, E6, F#6, G#5, and A#5. This creates an octave split between the notes F# and G#. You can also disallow the third inversion of the chord, so no break occurs and all the original notes play in the same octave.

You can allow or disallow certain inversions of a chord in each of the four levels of the chord. These settings affect all instrument parts that play the chord level, in any pattern that encounters the chord.


To choose inversions for a chord

  1. Click the Chord Inversion tab in the Chord Properties window.
  2. At the left of the inversion keyboard for level 1, click the Next button to advance to the next inversion of the chord. The bottom note of the chord is transposed an octave higher; all other levels are dimmed.
  3. At the right of the inversion keyboard for level 1, click the Legal check box to remove the check mark and disable use of the inversion. Click the check box again to enable use of the inversion.
  4. Repeat steps 1 to 3 until you have enabled or disabled all inversions for the chord level, as desired.
  5. Click the Chord/Scale tab to accept changes to the Chord Inversion tab.
  6. Click the Chord Inversion tab again to adjust inversions for other chord levels.


Chord Structure Guidelines

The lower octave of the chord scale keyboards on the Chord/Scale Tab represents the 12 pitches (from C to B) directly below 2C. The second octave represents the 12 pitches (from C to B) directly above 2C. As a chord root, 2C does not denote the pitch C in a specific octave, such as middle C. It is a median, nontransposing chord root that does not transpose the notes of an instrument into a different range when a pattern encounters the chord. For more information, see Purpose of Chord Level Range Restrictions.

When designing chords, observe the following guidelines:

  • There must be a chord that contains either three or four notes in each level. Although you can enter more than four notes in a level, only the lowest four notes are used, and any other notes are ignored. Chord structures on each level typically consist of steps 1, 3, 5, and optionally 7 of a seven-note scale. This means there is one scale tone (scale step 2) between the root and 3rd of the chord, and one scale tone (scale step 4) between the 3rd and 5th of the chord. If the chord includes a 7th, there is one scale tone (scale step 6) between the 5th and 7th of the chord.
  • The chord root on each level must be between 1C and 2B.
  • The chord tones in a level cannot be spread farther than the range of two octaves. You can use any interval between the tones of a chord (you are not limited to third intervals), so long as the outer two tones are not more than two octaves apart. If the chord exceeds two octaves, the warning shown in the following illustration is displayed.

    Illegal Chord dialog box

    If this warning is displayed, click OK and remove either the highest or lowest note from the chord level.

Note Each of the four levels in the chord for composition must use notes that are within a major 7th interval; that is, less than one octave. For more information, see Chords for Composition.

For more information about how to design chords using the Chord Properties window, see the following topics:

  • How a Pattern Interacts with a Chord
  • Purpose of Chord Level Range Restrictions
  • Using a 6th in Place of a 7th


How a Pattern Interacts with a Chord

As a segment containing a Style Track or Pattern Track plays, it encounters various chords in the Chord Track. With each chord, the pattern notes adjust to fit the chord and its scale. For example, if you design a pattern to play steps 1, 2, 3, 4, 5, 6, and 7 of a chord and scale, the pattern plays different notes when it encounters a 2C major chord and a 2G7 chord.

The notes you insert into a pattern are calculated not as specific pitches, such as C, D, or E, but according to their function in the chord, such as step 1, 2, or 3 of the chord's underlying scale. In most cases it is easiest to create a pattern using a 2CM7 chord for composition. As the pattern originally designed on a 2CM7 chord encounters various chords in a segment, the notes in the pattern adjust to fit the scale used in each chord.

The following table shows the resulting notes of a pattern containing steps 1, 2, 3, 4, 5, 6, and 7 when encountering various chords in a segment.

Original pattern notes based on 2 C M7 | Chord | Resulting notes
C, D, E, F, G, A, B | 2FM7 | F, A, Bb, C, D, E, F
C, D, E, F, G, A, B | 2AbM7 | Ab, Bb, C, Db, Eb, F, G
C, D, E, F, G, A, B | 2G7 | G, A, B, C, D, E, F
C, D, E, F, G, A, B | 2Bb7 | Bb, C, D, Eb, F, G, Ab
C, D, E, F, G, A, B | 2Em7 | E, F#, G, A, B, C#, D

Additional factors can influence the result when a pattern encounters a chord. These include:

  • Using 6th chords

    Pattern notes designed to play on the 7th step play on the 6th. For more information, see Using a 6th in Place of a 7th.

  • Play mode of the pattern

    Some play mode settings cause 7ths to be omitted, or cause other behaviors in the pattern. For more information, see Play Mode.

  • Inversion boundaries of the pattern

    If the chord causes the pattern notes to exceed the boundaries for the range of a part, some notes may transpose up or down an octave. For more information, see Inversion Boundaries.

  • Legality of chord inversions

    If you do not allow inversions to be used for a chord, the range for some pattern notes may change. For more information, see Chord Inversion Tab.

The following table shows how a pattern containing steps 1, 2, 3, 4, 5, 6, and 7 can be affected by other factors and special cases.

Original pattern pitches based on 2CM7 | Chord encountered | Special factor | Resulting notes | Comments
C, D, E, F, G, A, B | 2CM6 | Chord has 6th, but no 7th. | C, D, E, F, G, A, A |
C, D, E, F, G, A, B | 2CM (no 7) | Play mode: chord. | C, D, E, F, G, A (7 omitted). |
C, D, E, F, G, A, B | 2BbM7 | High chord. | Bb, C, D, Eb, F, G, A (F, G, and A transpose one octave down). | Because high F, G, and A are outside the inversion boundary, they play an octave lower.
C, D, E, F, G, A, B | 2BbM7 | High chord, but 2nd inversion not allowed. | Bb, C, D, Eb, F, G, A (G and A transpose one octave down). | The 2nd inversion is not allowed, so F cannot be used as the lowest note in the pattern.


Purpose of Chord Level Range Restrictions

The restriction in using a chord root between 1C and 2B on each chord level, coupled with the restriction of a two-octave span on each level, limits you to a mid-range chord for each level. This does not mean the actual range of pattern notes played by an instrument is limited to the middle range. In DirectMusic Producer, the note 2C is considered as a nontransposing value, not as a specific pitch C in a particular octave. In most situations, a chord with a root of 2C acts as a nontransposing chord for the notes of a pattern.

Because patterns are typically created using a 2C major chord for composition, notes in the various instrument parts of the pattern usually remain in their original ranges when they encounter a 2C chord. If a pattern encounters a 1C chord, the pattern notes are transposed an octave lower. If a pattern encounters a 1F chord, notes are transposed down a fifth.

If the pattern encounters a 3C chord, the notes are transposed up an octave. Likewise, a 2D chord transposes pattern notes up one step, while a 3D chord transposes pattern notes up one octave and a step. Of course, if the original pattern is created using a chord for composition other than 2C major, the pattern notes transpose differently as they encounter chords.

To avoid having notes transpose at large intervals from their positions, and potentially beyond the typical range of the instrument playing the part, design each chord level on the Chord/Scale Tab using a chord root that is as close as possible to 2C. For example, to create a Bb dominant 7 chord with multiple extensions, you might design it as shown in the following illustration.

The figure shows the properties of a chord called 1Bb 7b9#9#1113. This is considered a complex chord. For more information, see Simple and Complex Chord Structures.

The chord has the following properties:

  • Level 1 contains the primary structure of the chord—a simple 1Bb7 chord with a scale that is equivalent to Bb mixolydian. The primary chord is built on the Bb closest to the mid-range 2C.
  • Level 2 contains a 2Ddim7 chord with a scale that contains the four tones of the chord (D, F, Ab, and Cb) with one scale tone between chord tones. The level 2 chord is built on the D closest to the mid-range 2C.
  • Level 3 contains a 2Fdim7 chord with a scale that contains the four tones of the chord (F, Ab, Cb, and Ebb) with one scale tone between chord tones. The level 3 chord is built on the F closest to the mid-range 2C.
  • Level 4 contains a 2Bbdim7 chord with a scale that contains the four tones of the chord (Bb, Db, Fb, and Abb) with one scale tone between chord tones. The level 4 chord is built on the Bb near the top of the available root choices. This chord may be appropriate with some parts, or it may cause some parts to transpose notes down an octave to avoid exceeding their inversion boundaries.

The chord contains the pitches shown in the following table.

Chord step | Equivalent pitch
Root (1 Bb) | Bb
3rd | D
5th | F
b7 | Ab
b9 | Cb
#9 | C# (Db)
#11 | #11 (Fb)
13 | G

The behavior of a pattern as it encounters this 1Bb7b9#9#1113 chord depends on several factors. The main factors are whether a pattern is created using a 2C major chord for composition, and whether instrument parts in the pattern are set to use levels 2, 3, or 4 of a chord.

For an example of the different ways chord level assignments can affect the notes in a part, see Chord Level Effects.


Chord Level Effects

A pattern that contains four instrument parts (string bass, cello, clarinet, and flute) is used here to illustrate the ways chord level assignments can affect the notes in a part. The string bass, cello, clarinet, and flute parts are each assigned to one of four chord levels: levels 1, 2, 3, and 4, respectively. The pattern uses a 2C major chord for composition. The pattern encounters two chords: a simple 1Bb7, and a 1Bb7b9#9#1113.

The notes in all parts consist of a C major scale (C, D, E, F, G, A, and B) written in a middle range appropriate to the instrument playing the part. The following table lists the notes in each part.

Part | Original notes | Comments
Flute | C6, D6, E6, F6, G6, A6, B6 | C6 is equal to the note one octave above middle C.
Clarinet | C5, D5, E5, F5, G5, A5, B5 | C5 is equal to middle C.
Cello | C4, D4, E4, F4, G4, A4, B4 | C4 is equal to the note one octave below middle C.
String Bass | C3, D3, E3, F3, G3, A3, B3 | C3 is equal to the note two octaves below middle C.

The behavior of each part as it encounters various chords depends on two factors: what chord level is assigned to the part, and what chord structures and scales are contained at that level in the chords that are encountered.


Encountering Complex Chords

A pattern may encounter a complex chord with multiple extensions, as shown in the following illustration. For information about the properties of this chord, see Purpose of Chord Level Range Restrictions.

The following table shows the behavior when the example pattern encounters a 1 Bb 7b9#9#11 13 chord.

Instrument part | Original notes | Assigned chord level | Chord at this level | Resulting notes
Flute | C6, D6, E6, F6, G6, A6, B6 | Level 4 | 2Bbdim7 | Bb6, Cb6, Db7, D7, Fb7, Gbb7, Abb7
Clarinet | C5, D5, E5, F5, G5, A5, B5 | Level 3 | 2Fdim7 | F5, G5, Ab5, Bb5, 5Cb, Db5, Ebb5
Cello | C4, D4, E4, F4, G4, A4, B4 | Level 2 | 2Ddim7 | D4, Eb4, F4, G4, Ab4, Bb4, Cb4
String Bass | C3, D3, E3, F3, G3, A3, B3 | Level 1 | 1Bb7 | Bb2, C3, D3, Eb3, F3, G3, Ab3

Because each level in the preceding example has a different chord, the results are different for each part. This is the case even if each part contains original notes that are very similar. In some cases, the chord for a level causes the notes to move into a very different range from their original positions. For example, the 2Bbdim7 in level 4 has a root that is a minor 7th higher than the default 2CM7 chord for composition used in the pattern. This means that all notes of the Flute part are transposed up by roughly an interval of a 7th, while the notes of the other parts, such as the String Bass and Cello, transpose by only a major 2nd or less.


Encountering Simple Chords

A pattern may encounter a simple chord, such as a Bb7, where all four levels of the chord have the same structure.

The following table shows the behavior when the example pattern encounters a simple chord where all levels contain only a 1Bb7 chord and mixolydian scale.

Instrument part | Original notes | Assigned chord level | Chord at this level | Resulting notes
Flute | C6, D6, E6, F6, G6, A6, B6 | Level 4 | 1 Bb7 | Bb5, C6, D6, Eb6, F6, G6, Ab6
Clarinet | C5, D5, E5, F5, G5, A5, B5 | Level 3 | 1 Bb7 | Bb4, C5, D5, Eb5, F5, G5, Ab5
Cello | C4, D4, E4, F4, G4, A4, B4 | Level 2 | 1 Bb7 | Bb3, C4, D4, Eb4, F4, G4, Ab4
String Bass | C3, D3, E3, F3, G3, A3, B3 | Level 1 | 1 Bb7 | Bb2, C3, D3, Eb3, F3, G3, Ab3


Assigning All Parts to Level 1

Regardless of the complexity of a chord that a pattern encounters, if all parts in the pattern are set to respond only to Level 1 of a chord, the results are predictable. The following table shows this lack of difference.

Instrument part | Original notes | Assigned chord level | Chord encountered | Resulting notes
Flute | C6, D6, E6, F6, G6, A6, B6 | Level 1 | 1Bb7 | Bb5, C6, D6, Eb6, F6, G6, Ab6
Flute | C6, D6, E6, F6, G6, A6, B6 | Level 1 | 1Bb7b9#9#11 13 | Bb5, C6, D6, Eb6, F6, G6, Ab6
Clarinet | C5, D5, E5, F5, G5, A5, B5 | Level 1 | 1Bb7 | Bb4, C5, D5, Eb5, F5, G5, Ab5
Clarinet | C5, D5, E5, F5, G5, A5, B5 | Level 1 | 1Bb7b9#9#11 13 | Bb4, C5, D5, Eb5, F5, G5, Ab5
Cello | C4, D4, E4, F4, G4, A4, B4 | Level 1 | 1Bb7 | Bb3, C4, D4, Eb4, F4, G4, Ab4
Cello | C4, D4, E4, F4, G4, A4, B4 | Level 1 | 1Bb7b9#9#1113 | Bb3, C4, D4, Eb4, F4, G4, Ab4
String Bass | C3, D3, E3, F3, G3, A3, B3 | Level 1 | 1Bb7 | Bb2, C3, D3, Eb3, F3, G3, Ab3
String Bass | C3, D3, E3, F3, G3, A3, B3 | Level 1 | 1Bb7b9#9#1113 | Bb2, C3, D3, Eb3, F3, G3, Ab3

The notes of a part are created using a range appropriate to the instrument sound that plays the part. For example, all flute notes in a pattern are written within a range of approximately C5 to A7. It is not necessary to place the chords in a particularly high or low octave to anticipate the high or low ranges of the instruments that respond to that level. Using a mid-range chord in each level ensures that the ranges of all instruments remain in their original octaves.


Using a 6th in Place of a 7th

You can use a 6th in place of the 7th for an added tone in a chord, as shown in the following illustration.

2C major 6 chord

The example contains a 2C major 6 chord with a C major scale on all four chord levels. There is no scale tone between the 5th and 6th of the chord, so two consecutive notes of the chord scale are used as chord tones.

If you create 6th chords in a segment, it affects the playback of patterns as follows: If a pattern contains notes designed to play as the 7th of a chord, the notes play using the 6th of the chord and not the 7th step of the scale. At the same time, all pattern notes designed to play as the 6th step of the scale do so. While the 6th chord is playing, no notes play using the 7th step of the scale. This may result in unexpected repetition of notes playing on the 6th step.

For example, if you create a pattern with a 2 C M7 chord for composition, and design it to play steps 1, 2, 3, 4, 5, 6, and 7 of the scale, the pattern behaves in different ways when it encounters a 6th or 7th chord. The following table shows the notes that the pattern plays when encountering a 2F major 7 chord and a 2F major 6 chord; both chords use a standard F major scale.

Chord | Resulting notes
2FM7 | F, G, A, Bb, C, D, E
2FM6 | F, G, A, Bb, C, D, and D

The notes that result when playing a pattern on a chord may also be affected by the Play Mode setting for the pattern. See Play Mode for more information


Simple and Complex Chord Structures

You can create chords that are as simple or complex as you like. You have two options for building chords:

  • Using chord level 1 as the primary structure for a chord, you can build a chord with added tones and upper extensions, such as 6ths, 7ths, 9ths, 11ths, and 13ths in levels 2, 3, and 4. Because the upper levels contain notes that are simply added tones of the primary chord in level 1, you will likely use the same chord scale throughout all levels.
  • Using all four levels equally, you can create polychords where one or more chords are stacked on top of the level 1 chord to create increasingly complex chord structures. In this case, you will likely use a different chord scale for each level.

If you prefer to use simple chord structures, enter a chord in level 1 and duplicate it in levels 2, 3, and 4. Each time the chord is played by a band, every instrument, regardless of its range, interprets the chord using the same chord root, chord quality, and chord scale.


Using Complex Chords

To create complex chord structures, you can have up to four layers of chord structures that are used differently by different members of the band. Generally, the bass instruments play the first level of the chord, the lower middle instruments play the second level, and so on. However, you can assign any level to any instrument in a band.

You are not required to use all four levels, and for most composers who use this polychord feature, two levels are sufficient. For example, you might have a C major chord on the first level that is played by most parts in the band, and a D major on the second level that is played by higher instruments to create interest.

Each chord level must contain either three or four notes. You can use the level 1 as the primary structure for a chord and place added tones and upper extensions, such as 6ths, 7ths, 9ths, 11ths, and 13ths in levels 2, 3, and 4. Typically, the root and low notes of a chord are played by bass instruments. If you place these notes on level 1, you can assign level 1 to the bass parts in a style pattern. This leaves the upper extensions to higher instruments. Defining the upper notes as part of a separate level gives you greater control over which instruments play these notes.

You control which instruments in a band play each level by assigning different chord levels to an instrument part in the Part Properties window in Pattern Editor. For example, you could assign a bass part to chord level 1, a piano part to level 2, and a flute part to level 3. When these three parts encounter a chord, they each use the chord at their assigned levels. The following illustration represents a band of three instruments (flute, piano, and bass) playing over three different chords that have increasing complexity.

Using chord levels

In this example, the first chord is a simple C major 7 chord. The second one is a C major 7 chord with added extensions, created by placing an Em7 and a Gma7 over a Cma7. Finally, a complex polychord combines a C major 7, D major 7, and E major 7.

The bass part plays its patterns using level 1 of each chord. In the example, level 1 contains C major 7 in all three chords. The piano plays its patterns using level 2 of each chord. In this case, it plays C major 7, E minor 7, and D major 7. The flute plays its patterns using level 3 of each chord. In this case, it plays C major 7, G major 7, and E major 7.

In the example, the second chord, essentially C major 9, #11, and 13, places the lower portion of the chord (root, 3rd, 5th, and 7th) in the bass, places the middle notes of the chord and the 9th in the piano, and places the 7th and the upper extensions of the chord (9th, 11th, and 13th) in the flute. This keeps the roles of the high and low instruments separate as they play the complex chord structure. This is even more evident in the third chord where the complex combination of three distinct major 7 chords (C, D, and E) are separated between the three individual instruments. This type of chord level assignment is an orchestration technique that adds clarity and transparency to an otherwise dense and complex cluster of pitches.


Segment Designer

The most important component in Microsoft DirectMusic Producer is the segment, which is a playable unit of sound data.

Segments can contain a variety of elements, including bands, tempos, time signatures, lyrics, script commands, and chord changes. Elements are organized in Tracks. Most segments contain at least one of the following tracks as a source of musical notes or other sounds:

  • Style track

    To use styles, the segment must have at least one style track that causes styles to be applied at different points during playback. Each style contains patterns of notes with variations. The choice of patterns and variations is partly random and partly controlled by the application. Usually the segment has a Chord Track as well; the chords in the chord track modify the pitch of the notes in the patterns. A segment can also contain a Signpost Track and a Chordmap Track to vary the chord progression at run time.

    To create style-based content, use Style Designer and Chordmap Designer.

    In order for style patterns to be heard, their PChannels must be assigned to instruments by a band. Bands can be implemented in a band track. A band track containing the default band for the style is automatically inserted when you insert a style in a style track.

  • Pattern track

    A pattern track contains a single pattern with variations. Patterns in pattern tracks work just like patterns in styles; the only difference is that style patterns are chosen dynamically when the segment plays, but a pattern track always plays variations of the same pattern.

  • Sequence track

    To use sequences, the segment must have at least one sequence track containing a series of MIDI commands. Unlike style-based music, sequence-based music plays a fixed series of notes without variations or chord changes other than those contained in the sequence itself.

    To create sequence-based content, import MIDI files or enter notes directly into sequence track parts. See Importing a MIDI File as a Segment, Sequence Track, and Note Entry and Editing.

    In order for a sequence track to be heard, its PChannels must be assigned to instruments by a band. Bands can be implemented in a band track. A band track containing instrument assignments from the MIDI file is automatically inserted when you import a MIDI file as a segment.

  • Wave track

    To use waves, the segment must contain at least one wave track. To create wave-based content, add wave files to your project and insert them into wave tracks. You can use Wave Editor to create variations of existing waves.

Segments generally contain a Band Track as well, but it is possible to play a segment that has no band track, provided the instrument assignments and other PChannel settings have been implemented by a band in another segment, or can be left at their default value.


Primary and Secondary Segments

When multiple components are played simultaneously, either in the Microsoft DirectMusic Producer workspace or by applications, one is the primary segment and all others are secondary segments.

Note Although you can play segments, patterns, and other components in DirectMusic Producer, applications can play only segments. For simplicity, the remainder of this discussion refers to primary and secondary components as primary and secondary segments.

In DirectMusic Producer, you choose one component to be the primary segment by selecting it in the Transport List. You can also choose a component to be primary by making its editing window active. Any other component playing at the same time is a secondary segment and must be played by using the Secondary Segment Toolbar.

Choosing a segment as the primary segment is not a permanent setting, and you can choose a different segment in the Transport List at any time. When you transition from one segment to another by using the Transition Button, the new segment becomes the primary segment as soon as it begins playing.

Note Because only one segment at a time can be primary, playback of a primary segment that triggers another primary segment may be interrupted unexpectedly. See Preempted Primary Segments.

By default, certain tracks in the primary segment control behavior of secondary segments. For example, the groove track of the primary segment determines what patterns are available in secondary segments that are playing at the same time. For more information, see Controlling Segments.

Although it is possible to play secondary segments against silence, they generally start and stop while the primary segment is playing. Secondary segments are typically short, sometimes even less than a measure in length. By assigning a performance boundary to a segment in its Segment Properties window, you can coordinate its entrance as a secondary segment so it coordinates rhythmically and harmonically with the primary segment.

The behavior of primary and secondary segments is the same when a developer uses your files in a software application. The DirectMusic playback components are capable of playing any number of segments simultaneously, so a developer can combine multiple sound elements with as much layering as desired.

As you design a segment, keep in mind whether it will be used as a primary or a secondary segment when it is played by an application. For example, the primary segment might feature rhythm section parts, while the secondary segments contain instrumental solos that can be programmatically cued over the rhythm section.

Because a PChannel can only use one instrument sound at a given moment during playback, the bands in primary and secondary segments may conflict with each other. For more information, see Conflicts Between Bands.


Preempted Primary Segments

Because only one segment at a time can be primary, playback of a primary segment that cues other segments may be interrupted. For example, when you place a trigger for a primary segment in the Segment Trigger Track of another primary segment, playback transitions to the new primary segment when the trigger is reached. Similarly, if the Script Track in a primary segment calls a routine that plays another primary segment, playback transitions to the new primary when the script executes.

If you do not want playback of the current primary segment to stop when another segment is cued, you can set the cued segment to be a secondary segment as follows:

  • When using the segment trigger track of the current primary segment, select Secondary as the Type on the Segment tab of the Segment/Motif Trigger Properties window.
  • When using the Segment.Play method in a script, pass the IsSecondary flag as a parameter.

Alternatively, you can allow a new primary segment (B) to preempt the one currently playing (A), and then cue A to play again later, by using one of the following techniques:

  • Insert a trigger in the segment trigger track of B. Set the trigger to play A as a primary segment.
  • In the script routine that calls B, add a call to Segment.Play that cues A with the AtFinish flag. Segment A will begin playing when B reaches its end.


Controlling Segments

When multiple segments are playing, one segment always functions as the controlling segment and sets certain parameters that can have only a single value for all segments. For example, a performance can have only one tempo. When different segments with different tempos in their tempo tracks are playing, only the controlling segment can set the tempo.

By default, the primary segment is the controlling segment. However, you can designate a secondary segment as the controlling segment. When you play a primary segment and a controlling secondary segment simultaneously, some tracks in the controlling segment essentially replace the corresponding tracks of the primary segment. When playback of the controlling secondary segment stops, the primary segment becomes the controlling segment again.

The following tracks in a controlling segment, called controlling tracks, override the contents of corresponding tracks in other segments:

  • Chord Track
  • Groove Track
  • Mute Track
  • Tempo Track

All other tracks are noncontrolling; that is, each segment uses its own tracks. For example, each segment that contains a Style Track derives its patterns from the styles in that track.

When a secondary controlling segment does not contain a given controlling track, but the primary segment does, that track in the primary segment is controlling. For example, if the secondary controlling segment does not contain a groove track, but the primary segment does, the current groove level is taken from the primary segment.

The default behavior of controlling and controlled segments can be changed by setting flags on the Flags Tab of the track Properties Window. You can set a track to get parameters from its own segment even when another segment is the controlling segment.

In DirectMusic Producer, you can audition a segment as a secondary controlling segment, but you cannot save this property as part of the segment file. Usually it is the responsibility of the application playing the segment to designate it as the controlling segment. You can, however, force a segment to play as the controlling segment by cueing it as such in the Segment Trigger Track of another segment, or by cueing it from a script.


To audition a secondary segment as a controlling segment

  1. Select the segment on the Secondary Segment Toolbar and right-click the Play button. The Secondary Segment Audition Options dialog box appears.
  2. Select the Controlling Segment option and click OK.
  3. Start the primary segment by clicking the Play From Start Button on the main Transport Controls.
  4. Start the secondary segment by clicking the Play From Start button on the Secondary Segment Toolbar.


Creating a New Segment

This topic describes how to create a new, empty segment. You can also create a new segment by importing MIDI or wave data. See the following topics:

  • Importing a MIDI File as a Segment
  • Importing a Wave File as a Segment

A new segment has the default properties and settings shown in the following table.

Property | Default Value
Length | 20 measures
Tempo | 120 beats per minute
Time signature | 4/4
Initial chord | 2 C M
Key signature | C


To create a new segment

  1. On the File menu, click New.
  2. In the File Types list, click Segment.
  3. Click OK to automatically select a new default name for the segment, such as Segment1. You can also deselect Use Default Names to enable the Name box, enter a name for the segment, and click OK. The Segment Length dialog box is displayed as follows.

    Segment Length dialog box

  4. In the Segment Length dialog box, set the length of the segment, in either measures or clock time, depending on the option selected. If you like, you can add Extra Measures as well. You will be able to change these values later by using the Segment Properties window.
  5. Click OK to close the Segment Length dialog box. The Add New Tracks dialog box shown in the following diagram appears.

    Add New Tracks dialog box

  6. In the list, select a track type or types to insert. For more information about the different track types, see Segment Tracks. You can always add tracks later. A time signature track is added to the segment by default, so there's no need to select this type.
  7. Click OK. An icon for the new segment is added to the project, and the segment is opened in an editing window.


Importing a MIDI File as a Segment

Any MIDI file can be converted into a DirectMusic Producer segment. The segment includes all data in the original file, including the tempo, time signature, instrument sounds, volume and pan assignments, and note and controller information. For more information about the contents of a segment of imported MIDI data, see Imported MIDI Segment Structure.


To import a MIDI file as a segment

  1. On the File menu, click Import File into Project
    - or -
    In the project tree, right-click a project's icon to display the shortcut menu and then click Import.
  2. On the secondary menu that is displayed, click MIDI File as Segment.
  3. Locate a MIDI file on your computer and select it.
  4. Click OK. The MIDI file is imported into DirectMusic Producer and is added as a segment file in the project tree, using the same name.


Imported MIDI Segment Structure

Data imported from a MIDI file is placed in sequence tracks in a new segment. One track is created for each instrument channel in the imported file, and each track is assigned its own PChannel. Standard MIDI files are limited to channels 1 through 16. The PChannel number used in the segment matches the channel number in the original MIDI file.

Note Sequence tracks that belong to the same track group are grouped together in the Segment Designer window, and are also called parts.

The following figure shows a segment that was created by importing a MIDI file containing six instrument tracks.

Structure of an imported MIDI file

The segment in the figure contains the following data imported from the DemoMIDI file:

  • The key signature is C (identified in the new segment as zero sharps and flats).
  • The tempo is 87 beats per minute.
  • The first track in the MIDI file is track 1. It is renamed "Sequence" in the new segment and is assigned to PChannel 1.
  • The Strings track (Patch 50) is track 2 and is assigned to PChannel 2.
  • The Acoustic Guitar track (Patch 24) is track 3 and is assigned to PChannel 3.
  • The Acoustic Grand Piano track (Patch 4) is track 4 and is assigned to PChannel 4.
  • The Fretless Bass track (Patch 35) is track 5 and is assigned to PChannel 5.
  • The Drum Kit is track 10 and is assigned to PChannel 10.
  • The time signature is 4/4.
  • The instrument sound assignments are collected in a new band file called Band 1.
  • The volume and pan settings of each track of the imported file are placed in CC tracks within the sequence tracks. These are visible only when a sequence track is maximized.

Note Regardless of the arrangement of channels in a MIDI file, DirectMusic Producer imports channels in ascending order 1-16. For information about changing the order in which PChannels appear in the segment, see Imported PChannels.

A basic beginning chord of 1 C M is inserted automatically in the chord track of a segment when you import a MIDI file. This chord does not affect the MIDI data, and changing the chord does not transpose MIDI data into a different key. For more information, see Chord Track.

All tracks in the newly created segment are initially assigned to a track group. For more information, see Track Groups.

In DirectMusic Producer, PChannel 10 is reserved for drums. If a MIDI file contains an instrument other than drums in track 10, the track is assigned to another available PChannel.


Imported PChannels

Standard MIDI files are limited to channels 1 though 16, and these are assigned to PChannels 1 through 16 when you import the MIDI data. Tracks in segments and patterns are usually displayed in ascending order according to their PChannel numbers. If you want to change the position of a track, you must assign the track a different PChannel number.

Each time you import a MIDI file, there is a potential of creating instrument assignment conflicts on PChannels 1-16. As a precaution, avoid using PChannels 1-16 in a project into which you will import a MIDI file.

If you choose not to avoid using PChannels 1-16, then you can reassign the tracks of imported MIDI data to different PChannels after you import a MIDI file. This requires special care, so that you do not lose instrument settings or create conflicts with other bands in the project. Since a band that is imported with a MIDI file can contain up to 16 PChannels, it is easiest to choose a set of 16 unused PChannels that you reserve for reassigning all at once.

Reassigning PChannels in an imported MIDI file requires three steps:

  1. In the segment of imported MIDI data, or in the style into which the MIDI file is imported, double-click the imported band file to open it in Band Editor. In a segment, the imported band is called Band1, and is in the band track. In a style, the band is in the Bands list, and has the same name as the imported pattern.
  2. Double-click each PChannel in the band to open its PChannel Properties window, and reassign it an unused PChannel. Except for the PChannel name, all instrument properties are retained.
  3. In the segment, right-click each sequence track to open its Sequence Track Properties, or in the pattern, right-click each part to open its Part Properties. Reassign each track or part to new PChannel numbers, matching each track with the appropriate PChannel used in the band.

Note Volume and pan settings are not activated in the Properties window of a PChannel in an imported band. Volume and pan settings are inserted as a Continuous Controller curve for each track or part. These settings are not affected when you change the PChannel of a track or part. For more information, see Conflicts Between Bands and Continuous Controllers.

Reassigning PChannels for a MIDI file is especially difficult if you are importing multiple MIDI files that are meant to segue from one to the next, because it is recommended that you do not use overlapping groups of PChannel groups if there are going to be different instruments playing.

If, instead of importing a MIDI file as a segment, you copy and paste MIDI data from a separate sequencer application into the sequence track of a segment, data is pasted in top-down order, placing the highest MIDI channel at the top of the track editing window.

Multiple Tracks on a Single MIDI Channel

Most MIDI applications allow you to assign multiple tracks to a channel. For example, you might have four separate violin tracks playing on a single MIDI channel. In this way you can create MIDI files with far more than 16 instrument parts, by combining similar tracks on a single MIDI channel. When you import a MIDI file into DirectMusic Producer, the tracks are kept separate, depending on the type of MIDI file you import.

  • Type 1 MIDI files

    Regardless of MIDI channel assignments, each track is placed in a separate part when imported into DirectMusic Producer.

  • Type 0 MIDI files

    All tracks on a MIDI channel are placed in a single part when imported into DirectMusic Producer.


Importing a Wave File as a Segment

A wave file can be converted into a DirectMusic Producer segment. The new segment initially contains only a Wave Track, but you can add other tracks just as with any other segment.


To import a wave file as a segment

  1. On the File menu, click Import File into Project
    -     or -
    In the project tree, right-click a project's icon to display the shortcut menu and then click Import.
  2. On the secondary menu that is displayed, click Wave File as Segment.
  3. Locate a wave file on your computer and select it.
  4. Click OK. The wave file is imported into the project, and a new segment is created with the wave in the Wave Track.


Segment Properties

Each segment has a Properties Window containing the following tabs:

  • Segment Tab

    Contains settings for how a segment plays, such as length, key, and playback starting point.

  • Loop Tab

    Contains settings for which part of a segment plays when looping and how many repeats to play.

  • Info Tab

    Contains reference information about components, such as author and copyright.

  • Boundary Tab

    Contains default boundary settings for the segment used for stopping, playing as a secondary segment, and transitions.


Segment Tab

The Segment tab, shown in the following figure, includes the segment's name and length, plus several playback settings.

The tab contains the following settings:

  • Name

    Internal name of the segment. The same internal name appears in the project tree next to the internal icon of the segment. To modify the internal name, click the box and type a new name. The name is updated in the project tree as you type.

  • Length

    Length of the segment, either in measures or in clock time, depending on the option selected in the Segment Length dialog box. For information about that dialog box, see To create a new segment.

    If you shorten a segment, measures beyond the old length are deleted from the segment, including any chords, grooves, embellishments, or other commands that existed.

    If you lengthen a segment, the added measures contain no new chords or other commands.

  • Start at

    Point within the segment where it will start playing. Normally this is the beginning of the segment (bar 1, beat 1, grid 1, tick 0), but you might want a segment to begin playing at some other point by default. This setting affects only the beginning of playback for a segment. If the segment is set to loop, playback will loop to the beginning of the segment, unless you have set a different start point for looping.

  • Use TimeSig of Track Group

    Track group that provides the time signature for purposes of calculating the segment's length in measures, and loop points. This setting has no effect at run time.

  • Extend Primary TimeSig

    If selected, the start time is aligned with the most recently played time signature, even if no primary segment is now playing.

  • Play on new instance of embedded audiopath

    Available only for segments that have an embedded audiopath in the project tree. If the check box is selected, the segment plays on a new instance of that audiopath. If it is not, the segment plays on the audiopath selected in the Audiopath List. For more information, see Embedding an Audiopath in a Segment. In applications, a new instance is always created when the segment is played on the embedded audiopath.


Loop Tab

When you play a segment, it normally plays one time through and then stops. You can, however, set properties so that the segment loops one or more times.

Looping can be a convenience while you are editing the segment. Looping properties are also saved in the run time file and can be used as the default settings by applications. However, applications can change loop settings for a segment before playing it.

The Loop tab in the Segment Properties window is shown in the following figure.

The tab contains the following settings:

  • Loop Repeat

    Number of times the segment loops. A value of 0 means the segment plays just once, 1 means one repetition of the looping portion, and so on. Select Infinite to cause the segment to loop repeatedly until explicitly stopped.

  • Loop Start and Loop End

    Start and end time for the looping portion of the segment. For more information about beats, measures, grid divisions, and ticks, see Time and Beat Measurement.

  • Reset Loop to Entire Segment

    Click this button to reset the looping portion to the entire segment.


Boundary Tab

The Boundary tab in the Segment Properties window is identical to that in the Segment/Motif Trigger Properties window and contains settings similar to those in the Secondary Segment Audition Options dialog box. For information on these settings, see Boundaries and Segment Alignment.

The boundary settings you choose on this tab do not affect auditioning a segment as a secondary segment, unless you choose Segment's Default from the Performance Boundary list in the Secondary Segment Audition Options dialog box.

Similarly, the boundary setting you choose in the Segment Properties Boundary tab does not affect transitions between components, unless you select the Use Segment Default option in the Transition Options Dialog Box.


Segment Designer Window

Opening a segment launches Segment Designer, displaying an editing window similar to the following.

Segment Designer editing window

The window contains the following elements:

  • Timeline
  • Segment Tracks. At the left of each track is a selection button. Red buttons denote selected tracks. See Selected and Active Tracks.
  • Maximize/minimize buttons. Some tracks have buttons that are used to open and close Note Editing Windows for parts.
  • Zoom Buttons
  • Insertion Point


Segment Tracks

A segment can contain the following track types:

  • Band Track

    Contains settings for PChannels. Bands can be created within Segment Designer, inserted by a style, imported from a MIDI file, or dragged from the project tree.

  • Chord Track

    Contains chords you insert or edit with the mouse. You can also use an automatic composing feature for drawing a chord progression from the chordmap in the chordmap track.

  • Chordmap Track

    Contains a chordmap file to generate chord progressions.

  • Groove Track

    Contains settings that govern the selection of patterns from a style.

  • Lyric Track

    Contains text such as lyrics or debugging information. The text is displayed in the Message Window as the segment is played in DirectMusic Producer.

  • Marker Track

    Contains markers for appropriate points in the segment where playback of a segment can end, a secondary segments can begin, or a transition to another segment can take place.

  • Mute Track

    Contains commands to mute and remap PChannels.

  • Parameter Control Track

    Contains curves that control parameters for objects in an audiopath.

  • Pattern Track

    Contains individual patterns you create within the segment. Each pattern is essentially a sequence that contains variations and takes advantage of style note functionality.

  • Script Track

    Contains one or more programmed script commands that work directly with the DirectMusic run-time components to control playback of performances.

  • Segment Trigger Track

    Contains triggers for segments or motifs. These trigger playback of segment or motifs in a specific order and with specific start times that you choose.

  • Sequence Track

    Contains a sequence of imported MIDI data, or MIDI data you enter using the mouse or MIDI recording.

  • Signpost Track

    Contains markers where signpost chords are to be inserted from the chordmap in the chordmap track.

  • Style Track

    Contains one or more styles that consist of note patterns and other musical information.

  • Tempo Track

    Contains one or more tempo markings you insert to change the tempo.

  • Time Signature Track

    Contains one or more time signatures. This track is called TimeSig in the DirectMusic Producer user interface.

  • Wave Track

    Contains one or more wave sounds.

Tracks can be added to a segment when it is created, or later. The segment can contain multiple tracks of any type. However, some tracks might have no effect. For example, if you add multiple tempo tracks, only the first one you add governs the tempo.


To add tracks to a segment

  1. If necessary, open the editing window for the segment.
  2. On the Edit menu, click Add Track(s).

    - or -

    Right-click the Segment Designer window anywhere other than in the timeline, and then click Add Track(s) on the shortcut menu.

  3. In the Add New Tracks dialog box, select one or more track types.
  4. Click OK. A new track is inserted into the segment for each track type you selected.


Track Groups

Because segments can contain multiple tracks of a single type, it is sometimes helpful to organize tracks into groups. For example, a segment might have two style tracks, each associated with its own band track and chord track. Tracks are associated with one another by being assigned to the same track group.

You can create a maximum of 32 separate track groups in a segment. Each track group can have its own individual tracks for time signature, styles, chords, grooves, and so on, with contents in the tracks that are completely different from the other track groups. You can also share tracks between multiple groups so you do not have to re-create a separate instance of a track for each group that is using it.

Note The style and sequence tracks can only be assigned to one group at a time. The tempo track always applies to all track groups.


To assign a track to a track group or groups

  1. Open the Properties window for the track. See Common Track Properties.
  2. Click the Track Group Assignment Tab.
  3. Select a group or groups to assign the track to.


Common Track Properties

Each track in a segment has a Properties Window you can open by right-clicking the name of the track and selecting Properties in the shortcut menu. You can also click the name of the track and press the F11 key.

The first tab in the Properties window of any track is the Track Group Assignment Tab. This tab is used to assign the track to one or more track groups.

The second tab in the Properties window of most tracks is a Flags Tab. Use this to select numerous options to control the behavior of the track, and how the contents of the track interact with other tracks.

Other tabs are included in the Properties window of various tracks. For information, see the topics for individual track types, such as Band Track Properties.


Track Group Assignment Tab

The Track Group Assignment tab of a chord track, chordmap track, segment trigger track, groove track, band track, mute track, or lyric track is similar to the one shown in the following figure.

Track Group Assignment tab

Using this tab, you can click boxes to assign the selected track to one or more track groups. For more information, see Track Groups.

Tempo tracks and script tracks have a similar Track Group Assignment tab, but these tracks automatically belong to all track groups in a segment. The Properties window shows all 32 groups selected, and this setting cannot be altered.

Time signature, signpost, style, pattern, sequence, and wave tracks can be assigned to only a single track group. For these tracks, the Track Group Assignment tab looks like the following figure.

Track Group Assignment tab

You can insert a separate instance of any of these tracks for each track group in a segment.


Flags Tab

The Properties windows of most segment tracks contain a Flags tab in which you can choose various settings for how the component behaves.

When you open the Flags tab of a track, some options are selected by default. Depending on the track you select, some options are not enabled. The following figure shows a Flags tab with all possible options available.

Track Flags tab

The following table, presented in two parts for readability, shows which flags are available for each track type. For each flag, OOO denotes that the flag is available, and XXX denotes that it is turned on by default.

Playback and Compose Flags

Track Type | Enable Play | Enable Control | Send Notification | Use Clock Time | Audition (Design) Only | Recompose on Play | Recompose on Loop
Band | XXX | XXX |  | OOO | OOO |  |
Chord |  | XXX | XXX |  | OOO |  |
Chordmap |  | XXX |  |  | OOO |  |
Groove |  | XXX | XXX |  | OOO |  |
Lyric | XXX |  |  | OOO |  |  |
Marker |  | XXX |  |  | OOO |  |
Mute |  | XXX |  |  | OOO |  |
Parameter Control | XXX |  |  | OOO | OOO |  |
Pattern | XXX | XXX | XXX | OOO | OOO |  |
Script | XXX |  |  | OOO | OOO |  |
Segment Trigger | XXX |  |  | OOO | OOO |  |
Sequence | XXX |  |  | OOO | OOO |  |
Signpost | XXX |  | XXX |  | OOO | OOO | OOO
Style | XXX | XXX | XXX |  | OOO |  |
Tempo | XXX | XXX |  | OOO | OOO |  |
Time Signature | XXX | XXX | XXX |  | OOO |  |
Wave | XXX |  |  | OOO | OOO |  |

Control and Transition Flags

Track Type | Override Primary | Override All | Fallback | Controlling Segment Override Primary | Controlling Segment Override Notification | Start of Source Segment | Current in Source Segment | Start of Destination Segment
Band |  |  |  | OOO |  | OOO | OOO | OOO
Chord |  |  |  |  | OOO | OOO | OOO | OOO
Chordmap |  |  |  |  |  | OOO | OOO | OOO
Groove |  |  |  |  | OOO | OOO | OOO | OOO
Lyric |  |  |  |  |  |  |  |
Marker |  |  |  |  |  |  |  |
Mute |  |  |  |  |  |  |  |
Parameter Control |  |  |  |  |  |  |  |
Pattern | OOO | OOO | OOO | OOO | OOO |  |  |
Script |  |  |  |  |  |  |  |
Segment Trigger |  |  |  |  |  |  |  |
Sequence | OOO | OOO | OOO | OOO |  |  |  |
Signpost |  |  |  | OOO | OOO | OOO | OOO | OOO
Style | OOO | OOO | OOO | OOO | OOO | OOO | OOO | OOO
Tempo |  |  |  | OOO |  | OOO | OOO | OOO
Time Signature |  |  |  | OOO | OOO |  |  |
Wave | OOO | OOO | OOO | OOO |  |  |  |

Playback Flags

Use the following check boxes for enabling or disabling the track, providing control information, sending events, and sending notifications:

  • Enable Play

    Enables the track to send messages.

  • Enable Control

    Enables the track to respond to requests for information from other tracks, including tracks in other segments, when this segment is the controlling segment. See Controlling Segments.

  • Send Notification

    Enables notifications in track playback. Applications can request notification of certain events, such as measure boundaries being reached or the groove level changing. Disabling this option for any track specifies that the track does not respond to notification requests.

  • Use Clocktime

    Plays the track using clock time, not music time.

  • Audition (Design) Only

    Enables the track in the DirectMusic Producer environment only. When this option is selected, the track name in the editing window is displayed with cross-hatching. The track is not saved in the run-time segment.

Compose Flags

The following two flags are used exclusively in the signpost track properties. During playback, if one of these flags is set and the segment contains a chordmap track, a chord track, and either a style track or a pattern track, new chords are created for the segment each time it is played or loops. This enables composers to set up consistent parameters of structure that still generate fresh harmonic choices each time the segment loops.

  • Recompose on Play

    New chords are generated each time the segment is played.

  • Recompose on Loop

    New chords are generated each time the segment loops.

Control Flags

These flags modify the default behavior of the track when it requests information that normally comes from a secondary controlling segment or the primary segment, or when responding to requests for information when this segment is a secondary controlling segment or the primary segment. See Controlling Segments.

  • Override Primary

    The track requests information from this segment before the primary segment.

  • Override All

    The track requests information from this segment before a secondary controlling segment or the primary segment.

  • Fallback

    The track requests information from this segment if it is not available from a secondary controlling segment or the primary segment.

  • Controlling Segment: Override Primary

    Extends the power of a controlling segment by disabling messages from the equivalent track in the primary segment. . For example, you could set this option on the Groove track to ensure that groove changes come only from this segment.

  • Controlling Segment: Override Notification

    Extends the power of a controlling segment by disabling notifications from the equivalent track in the primary segment.

Transition Flags

These flags affect the playback of the segment as a transition. When settings from another segment are selected, the corresponding track in that segment is used for the transition. For example, if you select Start of Destination Segment for a style track, the style track of the transitional segment is ignored, and instead a pattern is taken from the first style in the destination segment.

To select a transition flag, first select the Transition: Use Settings From check box.

  • Start of Source Segment

    Data is taken from the beginning of the source segment.

  • Current in Source Segment

    Data is taken from the currently playing place in the source segment.

  • Start of Destination Segment

    Data is taken for the track from the beginning of the destination segment.


Entering Data in a Segment Track

Data that can be inserted into tracks might consist of a file, a DirectMusic Producer component, musical notes, text, a script command, or an instruction such as a tempo mark or chord.

You can use any of the following methods to enter data:

  • Click a track at the point where you want the data to be entered and press the INSERT key.
  • Click a track at the point where you want the data to be entered and copy data from the Clipboard using shortcut keys.
  • Right-click a track at the point where you want the data to be entered. On the shortcut menu, click Insert or Paste.
  • Drag data from elsewhere while pressing CTRL. A copy is made where you release the mouse.
  • Drag a component from the project tree onto an appropriate track. For example, you can drag a wave from the project tree onto a wave track.

When you insert some kinds of data by clicking Insert or the INSERT key, a Properties Window for the item is displayed so that you can enter initial properties. You can always change properties later.

See Also

  • Importing a MIDI File as a Segment
  • Importing a Wave File as a Segment
  • Note Entry and Editing


Positioning Data in a Segment Track

New data is entered where you last clicked on the segment, or where you drop a dragged object. You can adjust the timing of an object by dragging it or by using its Properties Window. In many cases you can enter a measure, beat, grid division, and tick. For objects that must occur at the beginning of the segment, or at the beginning of a measure, position data is omitted from the Properties window.

The following figure shows the Properties window of a band that is positioned on bar (measure) 1, beat 1, and tick -1.

Band Properties window

Some items that you can position on a measure, beat, division and grid include a Belongs To setting. Use this to associate the item with a beat other than the one where it is played. See Belongs to Beat.


Belongs to Beat

For many items that you place into the tracks of a segment, the Properties window includes a Belongs To or Belongs to Beat setting. Use this setting to specify a measure and beat that the item is logically attached to, even though it may be physically placed elsewhere. Logical positioning is useful when you want an item to be heard before or after a looping portion of a segment, but you want to include the item in the looping portion.

For example, you might have a four-measure segment in which only measures 2 and 3 are used for looping. A note that is physically positioned on beat 4 of measure 1 is normally not included in the loop. However, you can use the Belongs To Beat setting to assign the note to measure 2, and the note will be included each time the loop occurs.

Note The offset you use in the Belongs To Beat setting is limited to approximately one second before or after the physical position of the original note. If a note is offset more than one second, it can be clipped or silent during playback. However, applications can extend the prepare time in the DirectMusic playback of your file, making notes audible that occur more than one second before the beginning of a file. For more information, see DirectX Audio Help in the DirectX SDK documentation.

In general, you should not use this setting to set an object's logical time more than one or two beats away from its physical time.

The Belongs To Beat setting is included in the properties of the following objects in segment tracks:

  • Sequence notes
  • Bands
  • Segment triggers and motif triggers
  • Scripts
  • Lyrics
  • Waves


Editing Data in a Segment Track

After you have placed an object such as a chord, style, and band in a segment, you can manipulate it in a number of ways:

  • Delete it by selecting it and pressing the DELETE key.
  • Cut or copy it to the Clipboard, then paste it, using the standard keyboard commands.
  • Drag it to a new position by using the mouse, or copy it by holding the CTRL key while dragging.
  • Open a Properties Window by pressing F11.

To perform any of these functions, you first need to select the object by clicking on it. You can also select commands from a shortcut menu by right-clicking on the object.

All these operations can be performed on multiple selected objects. You can select multiple objects by holding down the CTRL or SHIFT key when clicking. You can also select all objects in a track by clicking Select All on the shortcut menu for one of the objects.

For more information on selecting multiple objects, see the following topics:

  • Selected and Active Tracks
  • Selecting Regions in Segments and Patterns
  • Selecting Notes

For specific information on editing track object properties, see the topics for the individual track types.


Band Track

Most segments have a band track containing at least one band. Whenever a band is encountered in the track as the segment plays, the instrument assignments and other PChannel settings in that band are applied.

The following figure shows a segment containing a band track. A band change is made at measure 3.

Segment with band track

When you insert a style in the style track of a segment, a band track is created if necessary, and the default band of the style is automatically placed in the band track on beat 1 of the first measure. Similarly, when you import a MIDI file as a segment, the instrument settings in the MIDI file are inserted as a band in the band track of the newly created segment.

In other cases, a band track is not added automatically, and when you create a band track, it is empty until you insert a band. Until you insert a band, the segment is played by the default band. For information on how to add a band track manually, see To add tracks to a segment.

The first band in the track is considered the primary band for the segment and should be inserted on beat 1 of measure 1. Any number of bands can be put in a track, but no more than one per beat.

Note It is possible to enter multiple bands on a beat by changing their properties after insertion. If multiple bands occupy the same beat, their names are displayed in italics. You can cycle through the selection of all bands on a beat by right-clicking any of the bands and clicking Cycle Bands.

Each band placed in the track is a separate instance or copy. Changes made to one band do not affect another, even one with the same name. Changes made to a band in the project tree do not affect instances of that band that have already been placed in segments.

You are not required to include a band track in every segment. However, if a segment does not contain a band track, then no instrument sounds are loaded into the computer's memory for playback, and no MIDI program changes are sent to the synthesizer. The result might be silence; it might be playback using only the default GM patch 00 instrument sound; or it might be playback using the instrument sounds that were last used for the PChannels.

To play multiple segments with a single band, you can place the band in just one segment and play that segment first, either as a secondary segment or as the primary segment. The PChannel settings apply to all segments played subsequently, until another band is played.

For information on entering and editing bands in the band track, see the following topics:

  • Entering Data in a Segment Track
  • Editing Data in a Segment Track
  • Positioning Data in a Segment Track
  • Band Properties
  • Editing a Segment Band
  • Ensuring Timely Band Changes


Band Track Properties

The Band Track Properties Window contains the following standard elements:

  • Track Group Assignment Tab
  • Flags Tab


Multiple Band Tracks

Segments can contain multiple band tracks. Every band in the segment becomes active as the cursor reaches it during playback. As a band becomes active, it affects playback of every PChannel for which it contains settings. Thus a band in one band track can override some or all of the settings of a band in a separate band track.

With most other track types, such as style tracks, chord tracks, and signpost tracks, you can create multiple instances of a track type and then assign them to different Track Groups so that a track only affects the other tracks in the same track group. However, this does not work with a band track. Because the settings used on a given PChannel override any previous settings used on the PChannel, assigning multiple band tracks in a segment to different track groups does not prevent a band in one track from affecting the playback of another track group. Therefore it is recommended that all band tracks that you assign to a track group contain bands that use only PChannels not used by bands in any other track groups.

When you use multiple band tracks, it is possible to place two or more bands so they occur simultaneously; that is, on the same beat and measure, but in separate tracks. Whenever this occurs, the band in the uppermost band track takes precedence during playback.


Band Properties

The Properties Window for a band in the band track contains the following settings:

  • Band

    Name of the object. This name is for display purposes only and does not associate the band with any other bands of the same name.

  • Start Time

    Time at which the band plays. Note that the tick value is –1 by default. For more information, see Ensuring Timely Band Changes.

  • Belongs To

    Measure and beat with which the band is logically associated. See Belongs to Beat.

Note The properties for an object in the band track are not the same as Band Properties in the Project Tree.


Ensuring Timely Band Changes

By default, all bands are given an offset of -1 tick from the beat where they are inserted. The reason is that if any two MIDI events occur simultaneously, there is no way to predict which event will occur first. If a band change were timed to coincide exactly with the first note of a measure, the note might not play on the correct instrument.

Note When you import a MIDI file as a segment, you must take special care when the MIDI file contains GM or GS resets at the start of the file. Because a band imported with a MIDI file is placed at tick –1, any GM/GS reset at measure 1, beat 1 will occur after the band, and will override the band at the beginning of the segment.

A band given a negative tick offset still plays when the segment loops back to the beat where it occurs, because it logically belongs to that beat. For more information, see Belongs to Beat.


Editing a Segment Band

After you place a band in the band track of a segment, double-click the band to open it and edit it using the Band Editor, as shown in the following figure.

Band in a band track and in Band Editor

Changes apply only to the instance of the band that is open in the editor. Other bands, even if they have the same name, are not changed either in the band track or in the project tree.


Chord Track

The chord track contains a progression of chords determining the transposition of notes in a style or Pattern Track. Chord changes can occur as often as once per beat.

If you do not include a chord track in a segment, or if you leave the chord track empty, the segment plays using a default chord of 2 C M7, equal to a middle range C major 7th chord. If the first chord in the track does not occur on the first beat of the first measure, the segment plays using 2CM7 until the first chord arrives.

The chord track does not affect the pitch of sounds in a Sequence Track or Wave Track.


Chord Track Properties

The Chord Track Properties Window is shown in the following figure.:

Chord Track Properties window

For the first two tabs, which are common to most track types, see the following topics:

  • Track Group Assignment Tab
  • Flags Tab

Key Tab

The Key tab specifies the key applied to all sequence tracks and pattern tracks that belong to the same track group or groups as the chord track whose properties you are editing.

You can create multiple key signatures in a single segment by creating multiple chord tracks, and giving each chord track a different track group assignment and key signature. You can also apply a single key signature to multiple track groups by assigning one chord track to more than one track group.

By combining a name of a key, such as D or F, and an appropriate number of flats or sharps for the key, you can choose any key, including major key signatures and minor key signatures. You also specify whether a chromatic key signature name is spelled using a flat or a sharp. For instance, you might select a key of D# for the segment, but prefer to show it with the enharmonic spelling of Eb.

In the Key Root box, enter the name of the key root, or select one by using the up-down arrows. The name you enter can be the name of a major key signature (such as D major) or a minor key signature (such as D minor).

Using the option buttons, select either #'s (sharps) or b's (flats).

In the Key Signature box, enter any number from zero to 7, or select one by using the up-down arrows, to specify the number of sharps or flats to be used in the key signature.

The key signature you enter is added to the chord track, and is shown in the hybrid notation view of the pitch guide for each track to which it applies, as shown in the following figure.

Pitch guide with key signature

The key signature is shown in the grand staff just as in standard musical notation. Accidentals are also added in the editing region in front of any notes that are affected by the key signature.

When you change the key of a segment, the chords in the chord track are not altered. However, the key signature affects how the root position of a chord is interpreted in the Variation Choices Window. For example, an Fma7 chord is considered a IV chord if a segment is in the key of C, but it is a V chord if a segment is in the key of Bb.

In addition to affecting the display of sequence notes and the pitch guide, the key signature in a segment affects transitions from one segment to another. For more information, see Transition Options: Transition Pattern.


Inserting and Editing Chords in a Segment

You can insert as many chords as you like in the chord track of a segment, up to one chord per beat. The first chord in the track is considered the primary chord for the segment and should be inserted on beat 1 of measure 1.

You can enter new chords, select and delete chords, or edit chords at any time, even while the segment is playing. If your segment is set to loop during playback, you can repeatedly audition the changes to the chord progression until you are satisfied.

To insert a chord, click the chord track at the beginning of any measure and press the INSERT key; or right-click the chord track at the beginning of a measure and click Insert on the shortcut menu. The Chord Properties window appears. Choose a chord root and name, and set the other properties of the chord.

Note If you enter a chord on the same beat and measure presently occupied by another chord, the new chord replaces the old chord entry. If a chord lands on the wrong measure, simply drag it to the desired position while the music plays.

See Also

  • Editing Data in a Segment Track
  • Entering Data in a Segment Track
  • Positioning Data in a Segment Track


Chordmap Track

The chordmap track contains a single reference to a chordmap that serves as a source for generating chord progressions. When you use the Compose Chords Button on the Signpost Track, or when chords are composed by an application at run time, signpost chords from the chordmap are inserted into the Chord Track of the segment. Any chord paths that accompany the signpost chords in a chordmap are also inserted into the chord track, if they can fit.

For information about creating a chordmap, see Chordmap Designer.

A chordmap track can contain only a single chordmap reference. If you wish to use multiple chordmaps within a single segment, you must create a chordmap track for each chordmap and assign the chordmap tracks to different track groups

For example, if you want to change to a different style in the middle of a segment, it is possible that you would also want to use a different chordmap to provide chords for the style. To do this, you must create two separate track groups that contain both a style track and a chordmap track, so each style can is used only with the appropriate chordmap information. For more information, see Track Groups.

You have the option of using a chordmap for designing the segment only. In the Chordmap Track Properties window, click the Flags Tab, and select Audition (Design) Only. When this option is selected, the chordmap is not saved with the run-time segment file.

For information on entering and editing chordmaps, see the following topics:

  • Entering Data in a Segment Track
  • Editing Data in a Segment Track
  • Chordmap Properties


Chordmap Track Properties

The Chordmap Track Properties Window contains the following standard elements:

  • Track Group Assignment Tab
  • Flags Tab


Chordmap Reference Properties

The Properties Window for a chordmap reference in a chordmap track contains a drop-down list of chordmaps available in the project. Select the chordmap for the track.

The Properties window for a reference in the chordmap track is not the same as the Chordmap Properties window, which contains properties for the chordmap itself when it is selected in the project tree.


Groove Track

As a style-based segment plays, the choice of patterns is determined, in part, by the current groove level and any embellishment commands in the groove track, as shown in the following figure:

Every pattern is assigned a groove range consisting of a range of numbers between 1 and 100. For example, the groove range of a pattern might be 10 to 20. The pattern is a valid selection when the groove level, which can be set either by a marker in the groove track or by the application playing the segment, is within that range.

To summarize the meaning of these similar terms:

  • Groove Range is the range of groove levels for which a pattern is valid. This is part of the Pattern Properties.
  • Groove Level is a value set by a marker in the groove track, or by an application, to restrict the choice of patterns for playback. This is part of the Groove Level Properties for a marker. The groove level can be randomized.

In addition to having groove levels, patterns can be designated as Embellishments. There are four standard embellishment types: Intro, Fill, Break, and End. You can also define up to 100 custom embellishment types. Patterns designated as embellishments are played only when the matching embellishment type is specified in the groove track, or by an application.

Each marker in the groove track can specify a groove level, an embellishment, or both. A marker also specifies how multiple matching patterns are to be selected as the segment loops.

In the previous figure, four markers are visible:

  • An Intro embellishment. Because it has no groove level, any single-measure Intro pattern can be used here.
  • A custom embellishment, called 101. Again, there is no groove level.
  • A groove level that can be set in the range from 15 through 35. No embellishment is called for, so only normal patterns will play.
  • A Fill embellishment with a groove level that can be set in the range from 30 through 70.

When a groove level is set, it remains in effect until the next marker that specifies a groove level. An embellishment command, however, only affects the pattern selected at that measure. After the embellishment has finished playing, normal patterns are selected until another embellishment marker is encountered.

If you do not include a groove track in a segment, or if you leave the groove track empty, the segment plays using a default groove level of 62, and no embellishments are played.

For information on entering and editing grooves and embellishments, see the following topics:

  • Entering Data in a Segment Track
  • Positioning Data in a Segment Track
  • Editing Data in a Segment Track
  • Groove Level Properties

Properties Window

For more information on how to use groove levels in combination with groove ranges in patterns, see Groove Ranges.


Groove Track Properties

The Groove Track Properties Window contains the following standard elements:

  • Track Group Assignment Tab
  • Flags Tab


Groove Level Properties

Groove and embellishment properties are shown in the following Properties Window:

Groove Level Properties

The Properties window contains the following groups of controls:

  • Embellishment

    If a special embellishment pattern is to be played at this point, select the embellishment type. If not, select None. If you select Custom, enter a value in the Custom Embellishment box, in the range from 100 to 199, or use the up-down arrows to select a value. This value should correspond to a custom embellishment assigned to at least one pattern in the Pattern Properties window.

  • Groove Level

    Enter or select a value in the range from 1 to 100. In the box labeled with the plus/minus sign, enter or select a value to create a range above and below the base groove level within which the groove level can be randomized. For example, in the illustration the groove level can range between 40 and 60.

    Click None to specify that the groove range of patterns is not taken into account when selecting a pattern.

  • Repeat Pattern

    Select the manner in which multiple matching patterns are to be selected as the segment loops. The choices are shown in the following table.

    Selection | Effect
    Random | Patterns are played randomly.
    Repeat Same | The same pattern is played each time.
    Sequential from First | Patterns are played in order, starting with the first in the style.
    Sequential from Random | Patterns are played in order, starting from a random position in the style.
    Shuffle | All patterns are played, then shuffled and played again.
    No Repeats | Patterns are played randomly, but none is repeated until all have played.


Lyric Track

The lyric track contains timed text. This text could be intended for display or debugging in an application, or it might be used within DirectMusic Producer to help in auditioning a musical program; for example, to display a message when a secondary segment is triggered. Text from the lyric track is displayed in the Message Window as the segment is played. In applications, it can be retrieved by Tools.

For information on entering and editing lyrics, see the following topics:

  • Entering Data in a Segment Track
  • Positioning Data in a Segment Track
  • Editing Data in a Segment Track
  • Lyric Properties


Lyric Track Properties

The Lyric Track Properties Window contains the following standard elements:

  • Track Group Assignment Tab
  • Flags Tab


Lyric Properties

Each unit of text entered in the lyric track has properties similar to those displayed in the following Properties Window:

Lyric Properties window

This window contains the following settings:

  • Lyric

    Text. The text is shown in the lyric track, but may appear truncated if another lyric follows it. You can always view the full text by opening this Properties window.

  • Start Time

    Point at which the entire text in the Lyric box is played.

  • Belongs To

    Bar and beat with which the lyric is logically associated. See Belongs to Beat.

  • Timing

    Timing settings are specifically for use when lyrics are played in an application. When a segment containing a lyric track is being played, each lyric is put in a message structure marked with a time stamp equivalent to the Start Time you defined for the lyric. This message is then delivered to application-defined tools. The Timing option determines how quickly the message is delivered. In most cases, select Quick Response to ensure timely delivery to tools.

    Option | Effect
    Quick Response | As fast as possible. The message is processed as soon as it is sent, regardless of its time stamp. By default, lyric notifications are sent approximately 1000 milliseconds earlier than their time stamp.
    Before Time Stamp | The message is processed just before its time stamp, allowing for port latency.
    At Time Stamp | The message is processed exactly at the time stamp.

    Note The Message Window always displays lyrics using the Before Time Stamp setting, regardless of the Timing option set for the lyric.


Marker Track

The marker track designates points in the segment used for Boundaries and Segment Alignment. Objects in this track are of two types:

  • Marker

    A point at which the segment can stop playing, or at which a secondary segment can be cued when the segment containing the marker is the primary segment. Markers are displayed in blue along the top edge of the track window.

  • Enter Switch Point

    A point at which this segment can start playing when its normal start point is aligned with a past event. Enter switch points are displayed in green along the bottom edge of the track window.

The track can contain any number of objects of either kind. When two objects overlap, they are displayed with hash marks. You can cycle through the Properties Window for overlapping objects by right-clicking on them and selecting Cycle Markers or Cycle Enter Switch Points on the shortcut menu.

The following figure shows a segment with a track containing markers and enter switch points at the beginning of every measure.

Segment with Marker track

Generally, markers and enter switch points are placed at the ends of short phrases that make up a segment, or at places that are natural stopping or starting points in the segment. For example, a segment that is 24 measures long might have six different phrases of four measures each. A marker track could be used to ensure that the segment always starts or stops at a phrase boundary.

Note If you insert a style containing Variation Switch Points into a segment, they affect the segment as if you had inserted enter switch points in the marker track of the segment. However, the variation switch points of the style pattern are not displayed in the marker track of the segment.


Marker Track Properties

The Marker Track Properties Window contains the following standard tabs:

  • Track Group Assignment Tab
  • Flags Tab


Inserting and Deleting Markers and Enter Switch Points

To insert a marker by using the INSERT key or the shortcut menu, first place the Insertion Marker in the upper half of the track. To insert an enter switch point, place the insertion marker in the lower half of the track. By default, markers are aligned with grid divisions. To make finer adjustments, use the Marker/Enter Switch Point Properties window after inserting the object. The left edge of the displayed mark is the position of the object; the width is not significant.

You can enter and delete multiple objects with a single command, as follows:

  • To mark or unmark all measures, beats, or grids in the segment
    1. Right-click the top or bottom half of any division in the marker track and select Mark All or Unmark All on the shortcut menu.
    2. On the submenu, click Measures, Beats, or Grids. All divisions of that type are marked or unmarked.
  • To mark or unmark selected measures, beats, or grids
    1. Select multiple divisions in the track where marks are to be placed or removed. You can select separate divisions by holding the CTRL key as you click, or select a range by holding the SHIFT key. Note that you can select the upper or lower half of any division, or both, but only one type of object will be inserted or deleted at one time, depending on where you click in the next step.
    2. Right-click any selected object. On the shortcut menu, select Mark Range or Unmark Range.
    3. On the submenu, click Measures, Beats, or Grids. All selected divisions on the matching boundaries and of the same type are marked or unmarked.

For general information on entering and editing track data, see the following topics:

  • Entering Data in a Segment Track
  • Positioning Data in a Segment Track
  • Editing Data in a Segment Track


Marker/Enter Switch Point Properties

The Marker/Enter Switch Point Properties Window contains the following settings:

  • Type

    The type of the object. This property is read-only.

  • Measure, Beat, Grid, and Tick

    The location of the marker or enter switch point. Use the Tick setting to make fine adjustments to the location of the object that cannot be made by dragging it.


Mute Track

The mute track is used to silence individual Performance Channels (PChannels) and to remap output from one PChannel to another.

When a PChannel is muted, all events that would ordinarily affect the PChannel are ignored. This includes notes and waves as well as band changes.

When a PChannel is remapped, all events from the sequence, style, and band tracks are redirected to the new PChannel, except for instrument patch changes. For example, suppose PChannel 1 has been remapped to PChannel 99. All notes in a part set to play on PChannel 1 are now played on PChannel 99, using the instrument assigned to that channel. However, if a band change causes PChannel 1 to be played on a different instrument, that change still affects only PChannel 1, not PChannel 99.

In the following figure, the mute track contains mute symbols (X) in various measures and beats of PChannels 1, 2, 3, and 4. PChannel 1 is muted during the entire segment. In addition, PChannels 2, 3, and 4 are reassigned as the segment plays; for example, PChannel 2 is reassigned to PChannel 6 after the first two beats.

Segment with mute track

The Mute list initially contains only PChannels 1 through 16. To modify the list, right-click the track and select Add/Remove PChannels on the shortcut menu. The Add/Remove PChannels Dialog Box is displayed.


To mute or unmute a PChannel for an entire segment

  1. In the mute track, scroll the list of PChannels until the PChannel you want is visible.
  2. Right-click any space in the strip to the right of the PChannel number.
  3. In the shortcut menu, click Mute PChannel n or Unmute PChannel n, where n is the PChannel whose strip you clicked.


To mute or unmute a PChannel for a single beat

  1. In the mute track, scroll the list of PChannels until the PChannel you want is visible.
  2. Click any beat space to the right of the PChannel number to place or remove the mute symbol (X).


To remap a beat or group of beats to a different PChannel

  1. In the mute track, scroll the list of PChannels until the PChannel you want is visible.
  2. Right-click a beat space that does not contain a mute symbol.
  3. On the shortcut menu, click Remap PChannel. The following Remap PChannel dialog box appears.

    Remap PChannel dialog box

  4. In the PChannel box, enter or select the PChannel to which you want to remap the original PChannel.
  5. Click OK. The PChannel is remapped up to the next mute or remap marker.


To delete remappings

  1. In the mute track, scroll the list of PChannels until the PChannel you want is visible.
  2. Right-click the beat space that contains the first remap marker you want to clear.
  3. Click Clear Remap on the shortcut menu. All matching markers to the right are deleted.


To clear all remappings and mute marks for a PChannel

  1. In the mute track, scroll the list of PChannels until the PChannel you want is visible.
  2. Right-click any beat space on the strip for the PChannel.
  3. Click Clear PChannel n on the shortcut menu, where n is the PChannel whose strip you clicked.


Mute Track Properties

The Mute Track Properties Window contains the following standard tabs:

  • Track Group Assignment Tab
  • Flags Tab


Parameter Control Track

The parameter control track contains curves that control the timing, settings, and parameters for objects contained in an audiopath, including Effects implemented as DirectX Media Objects (DMOs), and Tools.

For example, if an audiopath uses a Chorus effect, and you would like to gradually increase the wet/dry mix for the effect over a range of six measures, you can insert a curve in the parameter control track that does this for you, as shown in the following figure.

Parameter control track

The parameter control track can contain curves that control any DMO or tool used in the audiopath that is currently selected as the default, or the audiopath that is embedded in the segment. For more information selecting a default audiopath, see Audiopath List. For information about embedding an audio path in a segment, see Embedding an Audiopath in a Segment.

You can add as many parameters as you want to the parameter control track, including different parameters for the same object, or parameters for different objects. When you add a parameter, a new strip is added to the track. Although this strip can be selected separately, it is not a separate track. To assign parameter controls to a different track group, create another parameter control track.


To add a parameter to the parameter control track

  1. Right-click anywhere on the track.
  2. On the shortcut menu, click Add New Parameter. The following dialog box appears.

Add Parameter dialog box

  3. Click DMOs or Tools, depending on whether you want to add a parameter from a DirectX Media Object or an object in a toolgraph.
  4. In the Stage drop-down list, select the audiopath or toolgraph where the object resides.
  5. Select the DMO or tool from the Object drop-down list. The PChannels to which the object belongs are displayed in the read-only PChannels box.
  6. Select the parameter from the Parameter drop-down list.


To delete a parameter from the parameter control track

  1. Maximize the parameter control track editing window.
  2. Select strips for parameters to be deleted by using the selection buttons. If you do not select any strips, the active strip will be deleted.
  3. Right-click anywhere in track.
  4. On the shortcut menu, select Delete Parameter(s).


To insert a parameter control curve

  1. Right-click the strip in the maximized parameter control track where you want to add the curve.
  2. On the shortcut menu, click Draw Curve.
  3. Drag the mouse to draw a rectangle. Resize, reshape, and move the rectangle as necessary.
  4. Open the Properties Window for the curve to adjust the Parameter Properties.


Parameter Control Track Properties

The parameter control track Properties Window contains the following standard tabs:

  • Track Group Assignment Tab
  • Flags Tab

The settings on these tabs apply to all strips in the track.

In addition, the window contains an Object tab that displays the name of the object whose parameters are controlled by the selected track strip, and the PChannels to which it belongs. These properties are read-only.


Parameter Properties

The Properties Window for a curve in a Parameter Control Track is shown in the following figure.

Parameter Properties window

When multiple selected curves have different properties, these properties are displayed as broken lines, except for check boxes, which are gray if some selected curves have the property selected and others do not. Any changes made in properties apply to all selected curves.

Use the settings in this window to adjust the following properties of the selected curves:

  • Start Time, End Time, and Duration

    The start time, end time, and duration, expressed as a combination of bar, beat, grid, and tick values. The last column is expressed in milliseconds rather than ticks if the track is set to play in clock time on the Flags Tab.

    If you edit the start time, the duration remains unchanged, and the end time adjusts automatically. If you edit the end time, the start time remains unchanged and the duration adjusts automatically. If you edit the duration, the start time remains unchanged, and the end time adjusts automatically.

  • Start Value and End Value

    Value of the controller at the beginning and end of the curve. Intermediate values are determined by the Type (shape) of the curve.

  • Start From Current

    If you select the Start From Current option, the current value for the parameter at the time the curve starts replaces the start value. For example, if another curve in the segment has previously set the parameter to a different value, then that value is used in place of the start value shown in this Properties window.

  • Type

    Shape of the curve. Possible values are Sine, Logarithmic, Exponential, Instant, and Linear.

  • Flip Vertical or Flip Horizontal

    Click one of these buttons to flip the curve. In some cases this has the effect of changing the value in the Type list.


Pattern Track

A pattern is usually created as part of a style, and a style typically contains multiple patterns. However, you can create an individual pattern in the pattern track of a segment. The pattern track provides a quick way to create content in a segment that contains variations and responds to chords.

A pattern in a pattern track plays much as if it were in a style played by the style track. The main difference is that the pattern track always plays, whereas patterns in styles play only when selected by the playback engine. Because they are never candidates for selection, patterns in pattern tracks do not have groove ranges or embellishment types.

You create and edit patterns in pattern tracks just as you do in Pattern Editor, with the exception that you do not set Chords for Composition. When you enter notes into a pattern track, you always enter them as if the chord for composition is C major.

If the segment contains a Chord Track, you can specify whether the notes in pattern tracks adjust to the chords during playback. Right-click anywhere in the chord track and click Keep Constant. On the submenu, select MIDI Notes to cause the pattern track notes to play at the same pitches regardless of the chords in the chord track; or select Functionality to cause the notes to adjust to chords in the chord track.

See Also

  • Note Entry and Editing


Pattern Track Properties

The Pattern Track Properties Window contains the following standard tabs:

  • Track Group Assignment Tab
  • Flags Tab

In addition, the window has the following tabs:

  • Pattern Tab

    This tab contains the following settings:

    Setting | Effect
    Pattern Name | Name for internal display.
    Length | Length, in measures. Click the button to change the length.
    Time Signature and Grid | Click this button to display the Set Time Signature and Grid Dialog Box
    Reset Variation Order on Play | If selected, variations play from the start of the cycle (as specified in the Play control on the Part tab) each time the segment is played. If not selected, the cycle picks up where it left off. There is no effect on playback of variations in random order.

  • Part Tab

    Identical to the Part Properties window in Pattern Editor.


Script Track

The script track contains calls to routines in Scripts. Scripts work directly with the Microsoft DirectMusic DLLs to control playback of performances, including playback of the segment containing the script, and other segments named within the scripts.

Before you can insert a script in the script track, you must use Script Designer to create a script containing at least one routine. For example, the script shown in the following figure contains two very simple routines/procedures:

  • SetMasterTempo50

    Uses the Performance.SetMasterTempo method to set the tempo of the segment to 50 percent of its original state.

  • ResetMasterTempo100

    Uses the SetMasterTempo method to set the tempo back to its original state.

    Routines in Script Editor

The following figure shows a segment with the SetMasterTempo50 routine in measure 2, and the ResetMasterTempo100 routine in measure 4.

Segment with Script Track

If a routine in a script track plays a new primary segment by calling Segment.Play without the IsSecondary or IsControlling flags, that segment becomes the primary segment. This means that the current primary segment will stop, and script routines that had not yet been reached in it will not be run.

When you enter a script routine call in the script track, you must select a script and routine in the Script Routine Properties window. Until you do, the reference in the script track is displayed as <None> and has no effect.

For general information on entering and editing data in a track, see the following topics:

  • Entering Data in a Segment Track
  • Editing Data in a Segment Track
  • Positioning Data in a Segment Track


Script Track Properties

The Script Track Properties Window contains the following standard tabs:

  • Track Group Assignment Tab
  • Flags Tab


Script Routine Properties

Properties for a script routine in the Script Track are displayed in the following Properties Window.

Script Routine Properties window

This window contains the following settings:

  • Script

    Name of the script. Select a script from the drop-down list, which contains all scripts in the project tree.

  • Routine

    Routine to call. Select a routine from the drop-down list, which contains all routines in the script.

  • Timing

    Option that specifies how soon commands in the routine are delivered to the performance. The three timing options are shown in the following table.

    Option | Effect
    Quick Response | Commands are processed immediately, regardless of its time stamp. By default, command messages are prepared approximately 1000 milliseconds earlier than their time stamps.
    Before Time Stamp | Commands are processed just before their time stamps, allowing for port latency.
    At Time Stamp | Commands are processed exactly at their time stamps.

    In general, you should select Quick Response to ensure that commands are delivered in a timely manner.

  • Start Time

    Time at which the routine is called.

  • Belongs To

    Bar and beat with which the routine is logically associated. See Belongs to Beat.


Segment Trigger Track

The segment trigger track contains commands that trigger the playback of segments and motifs.

Each trigger in the segment trigger track is a reference to an existing segment or motif. The trigger has its own set of properties that control playback without altering the properties of the original file.

There are two ways to use the segment trigger track to control the performance of multiple segments:

  • Create one segment to serve as the primary segment with its own data for playback, and then insert secondary segments into its segment trigger track so their playback is layered on top of the primary segment without interrupting its playback. Secondary segments can be positioned to start at specific times during playback of the primary segment, and they contain their own individual settings for playback, including how long to play before stopping, and how many times to loop.
  • Create a segment that is completely empty except for a segment trigger track, and play it as a secondary segment to program the playback of other segments. Triggered segments can be either primary or secondary. If you make the empty segment the controlling segment, it controls the tempo of all other segments. See Controlling Segments.

When you enter a trigger in the track, you must select a segment or motif in the Segment/Motif Trigger Properties window. Until you do, the trigger has no effect.

Note Like any other segment, a triggered segment plays correctly only if its instruments have been downloaded to the synthesizer. Applications are responsible for downloading instrument data.

For general information on entering and editing data in a track, see the following topics:

  • Entering Data in a Segment Track
  • Editing Data in a Segment Track
  • Positioning Data in a Segment Track


Segment Trigger Track Properties

The Segment Trigger Track Properties Window contains the following standard tabs:

  • Track Group Assignment Tab
  • Flags Tab


Segment/Motif Trigger Properties

The Properties Window for a marker in the Segment Trigger Track is shown in the following figure.

Segment/Motif Trigger Properties window

The window contains two tabs:

  • Segment Tab

    This tab contains the settings shown in the following table.

    Setting | Notes
    Segment | Select to trigger a segment.
    Motif | Select to trigger a motif.
    Segment or Style | Select the segment to play, or the style containing the motif.
    Motif | Select a motif.
    Type | Select Primary or Secondary to specify the role of the segment. Select Controlling Segment to make a secondary segment controlling. For more information, see Primary and Secondary Segments and Controlling Segments.
    Start Time | Time at which the segment or motif is triggered.
    Belongs To | See Belongs to Beat.

  • Boundary Tab

    This tab contains performance boundary settings to override the default settings of a segment that is triggered. For information, see Boundaries and Segment Alignment.


Sequence Track

The sequence track contains MIDI sequence data. Unlike a Pattern Track, a sequence track does not respond to chords in a Chord Track, and does not contain variations.

Each sequence track contains data for a single part, is played on a single PChannel, and belongs to a single track group. Sequence tracks that belong to the same track group are grouped together in the segment editing window, but each has its own Sequence Track Properties.

Initially, all sequence tracks are displayed in a minimized version in which the notes are represented graphically as thin colored lines. The following figure shows four separate sequence tracks in minimized form.

Minimized sequence tracks

To open a sequence track for editing, double-click it or click its Maximize button. For more information on the maximized window, see Note Editing Windows.

When maximized, the editing window for each track contains a strip at the bottom, labeled CC, that contains curves for Continuous Controllers.


Entering Data in the Sequence Track

You can use any of the following methods to place data in a sequence track:

  • Capture output from a MIDI device

    See Capturing MIDI Data.

  • Import a MIDI file

    Import a MIDI file as a segment. This creates a new segment with a sequence track for each part, containing notes and MIDI controller curves, and a band track that contains instrument assignment information from the MIDI file. For more information, see Importing a MIDI File as a Segment.

  • Enter data by hand

    Enter notes and continuous controller curves. See Note Entry and Editing and Continuous Controllers.

  • Copy and paste data from a separate MIDI program

    Copy MIDI data from a MIDI software application and paste it into the sequence track of a segment. All MIDI data and MIDI controller information can be copied. See Moving and Copying Notes by Using the Clipboard.

  • Copy and paste data between tracks

    Copy MIDI data from one sequence track and paste it into another, even between segments. You can create multiple sequence tracks in a segment to contain multiple sequences of MIDI data you are pasting, or you can combine the contents of multiple sequence tracks by pasting MIDI data into one track. You can also copy notes from a style pattern and paste it into the sequence track of a segment. See Moving and Copying Notes by Using the Clipboard and Moving and Copying Notes by Dragging.

Note MIDI notes must be copied and pasted separately from MIDI controller curves when using copy and paste commands.


Sequence Track Properties

The Sequence Track Properties Window contains the following standard tabs:

  • Track Group Assignment Tab
  • Flags Tab

In addition, the window has the Part tab showing in the following figure.

Sequence Track Properties window

This tab includes the following settings and buttons:

  • Name

    Name displayed in the track list of the segment.

  • PChannel

    Number and name of the PChannel on which the part plays. The PChannel name is shared across components in the project and is automatically updated here if edited in another component.

  • Extra Bars

    Click the Change button to set Extra Measures in the sequence.

  • Color Buttons

    Click to choose colors for the notes, overlapping notes, selected notes, and accidentals in sequence tracks.

Note The color properties apply to all sequence tracks, not just this one.


Sequence Properties Window

The Properties Window for selected notes in a Sequence Track is shown in the following figure.

Sequence Properties window

If multiple selected notes have different properties, these properties are displayed as broken lines. Any changes made in these or other properties apply to all selected notes.

The window contains the following settings:

  • MIDI Note

    Defines the pitch as a note name and octave. Use the up-down arrows to change the note name. Enter an octave value in the range from 0 to 10, or use the up-down arrows to select a value.

  • Velocity

    Represents the speed at which the signal from a pressed MIDI piano key is sent, and is usually translated as volume. Enter a value in the range from 1 to 127.

  • Start Time, End Time, and Duration

    Defines the note start time, end time, and duration, expressed as bar (measure), beat, grid (divisions of the beat), and tick values (offsets from the grid, at 768 ticks to a quarter note).

  • Belongs to Beat

    Specifies the measure and beat that a note logically belongs to, which might differ from its actual position. For more information, see Belongs to Beat.


Signpost Track

The signpost track contains markers for signpost groups. This track is used in segments that contain a Chordmap Track, and helps define the chords that can be chosen when segment chords are composed.

Thirteen signpost groups (1, 2, 3, 4, 5, 6, 7, A, B, C, D, E, or F) are available in a chordmap file. When you place a signpost group marker in a signpost track, it specifies that a signpost chord from that group is to be placed in the Chord Track at the position of the marker.

In order to draw chords from a chordmap, the signpost track must contain at least one group marker. In addition, the specified chordmap must have at least one chord assigned to the signpost group specified by the marker.

Signpost chords often have chord paths that extend from them. A signpost track must have at least two signposts in order for any chord paths to be used. In addition, the two signposts must be separated by the number of measures required to fit the chord path. If no paths fit, then the signposts are used without their paths.

For more information, see How Chord Composition Works.


Signpost Track Properties

The Signpost Track Properties Window contains the following standard tabs:

  • Track Group Assignment Tab
  • Flags Tab

In addition, the window has the following Audition Settings tab.

Audition Settings tab

This tab is used to set the activity level, which controls the number of connecting chords inserted between signposts in the segment when chords are composed.

If a chordmap contains many chord paths, the activity level setting helps differentiate between them. For example, a chord path with one connecting chord every two or more measures is considered a low-activity chord path. When you choose the Low setting, only chord paths with low activity can be used to fill in the measures between signposts.

The following table shows the intensity level choices and the general tendency for the number of chord changes that are inserted. The distance between the signposts can affect the actual number of chords inserted.

Setting | Effect
High | Average of two chords per measure.
Medium High | Average of one chord per measure.
Medium Low | Average of two chords every three measures.
Low | Average of one chord every two measures.
Bypass Activity | Number of chords per measure is ignored. A chord path is selected at random from all chord paths that fit.

Depending on the number of chords in the chord paths, some activity level settings can result in no chord paths being selected. For example, if all chord paths contain a high number of chords, and you choose a low-activity level, there may be no chord paths that match. The Bypass Activity level ensures that a chord path is selected regardless of the number of chords.

The activity level is saved in the properties for the track within DirectMusic Producer. However, it is not saved in the run-time segment file.


Compose Chords Button

A segment containing a chordmap and signposts can repeatedly generate fresh chord progressions based on the signpost chords of a chordmap file. This is done using the Compose Chords button, shown in the following figure.

Compose Chords button on signpost track

Before you can use the Compose Chords button, you must complete the following actions:

  • In the Chordmap Track, insert a chordmap from which the chords are drawn.
  • In the Signpost Track, insert one or more signposts. See Placing Signpost Group Markers.
  • Add either a Style Track or a Pattern Track if one does not exist. If you use a style track, you must also insert a style to play in the segment.

Each time you click the Compose Chords button, DirectMusic Producer places new chords in the Chord Track.

Note The signpost track can also be set to recompose the chords automatically each time the segment plays or loops. This setting is on the Flags Tab of the Signpost Track Properties window.

See Also

  • Using Chordmaps with Segments


Placing Signpost Group Markers

You can place one signpost group marker per measure in the signpost track, in as many measures as you choose, though it is recommended that you spread them out over several measures. You should always place a marker in the first measure. Thereafter, a marker usually occurs every four to eight measures, depending on how frequently you want the chords to change. However, you are free to place them wherever they make the most musical sense.

When chords are composed, signpost chords are drawn from the signpost groups of the chordmap and inserted at the time of the corresponding signpost group markers. If a signpost chord is followed by a chord path that can fit before the next signpost marker, the chord path is also inserted. If no chords in the signpost group have paths that fit, a single chord from the signpost group is inserted and plays until the next signpost group marker arrives.

For more information about how chordmaps and signpost group markers work together, see How Chord Composition Works.

For general information on entering and editing track data, see the following topics:

  • Entering Data in a Segment Track
  • Positioning Data in a Segment Track
  • Editing Data in a Segment Track


Signpost Group Properties

Properties for a signpost group marker in the signpost track are shown in the following Properties Window:

Signpost Group Properties window

The drop-down list contains the identifiers of signpost groups. Select the group from which a signpost chord can be selected for this measure. For more information on signpost groups in chordmaps, see Signpost List.

Select the Precede Signpost with Cadence check box to use any cadence chords that are attached to signpost chords in the group. For more information, see Cadence Chords.

The signpost group is shown as the marker in the signpost track. If you selected Precede Signpost with Cadence, the group marker is prefixed with a caret (^).


Style Track

The style track contains references to Styles, which supply note patterns and other musical information as the segment plays.

You can insert up to one style per measure in the style track. The first style in the track is considered the primary style for the segment and should be inserted on beat 1 of measure 1.

When you enter a style marker by means other than dragging a style from the project tree, you must select a style in the Style Properties window. Until you do, the marker is displayed as "Empty".

A style track can be assigned to only a single track group, but you can insert a separate style track for each track group in a segment. Use Track Groups to associate styles with their own bands and chord progressions.

Entering a style in the style track automatically enters the style's band in the Band Track. If necessary, a band track is created. Similarly, any tempos in the style are added to the Tempo Track, which is created if necessary.

Markers in the style track are references to the original styles in the project tree. Any subsequent changes made to the original styles will affect the playback of the segment. However, the style's bands are embedded in the segment as new bands. Changes made to the style's band in the project tree do not affect the band in the segment, or the other way around.

For general information on entering and editing data in a track, see the following topics:

  • Entering Data in a Segment Track
  • Editing Data in a Segment Track
  • Positioning Data in a Segment Track

  • Style Designer


Style Track Properties

The Style Track Properties Window contains the following standard tabs:

  • Track Group Assignment Tab
  • Flags Tab

In addition, the window has the following Seed Variations tab.

Seed Variations tab

This tab is used to control the selection of variations each time the segment is played within DirectMusic Producer. The seed is an arbitrary number used to initialize a random number generator, ensuring that the same sequence of random numbers is generated each time. Fixing the sequence of random numbers causes the playback of the styles in the style track to be the same every time the segment is played.

The tab contains the following settings:

  • Enable

    Select this check box to enable seeding of the random number generator. If Enable is not selected, the random number generator is seeded by the system clock, and variations are played in a different order each time the segment is played.

  • Generate New Seed

    Click this button to generate a new seed and hence a new fixed order of variations.

  • Edit Seed

    Click this button to enter a known seed that produces an order of variations you want to hear.

If you discover a seed value that produces an order of variations you would like duplicated in an application, you can deliver the seed number to the application developer for use in DirectMusic playback. For more information, see the GUID_SeedVariations topic in the DirectX SDK documentation.


Style Properties

The Properties Window for a marker in the Style Track contains two settings:

  • Style

    Name of the style to which the marker refers. The drop-down list shows all styles in the project tree.

  • Measure

    Measure in which the marker appears.


Tempo Track

The tempo track contains tempo settings for the segment.

By default, the tempo used in a segment is 120 beats per minute (bpm). This default tempo is not displayed anywhere in a segment until a tempo track is added. A tempo track is added to the segment automatically when a style containing a tempo is inserted in the Style Track, or when a MIDI file is imported as a segment. You can also add one manually.

When a style is added to the style track, the tempo of the style is added to the tempo track. You can edit this tempo if you like.

The first tempo in the tempo track is considered the primary tempo for the segment and should be inserted on beat 1 of measure 1. You can insert as many tempo markings as you want in a segment. The tempos apply to all tracks in all Track Groups. Note, however, that the tempo for a performance is always taken from the primary or controlling segment, and the tempo track of a secondary, non-controlling segment is ignored. For more information, see Controlling Segments.

If a segment has multiple tempo tracks, all tracks in the segment play according to the markers in the first tempo track created. Any tempo tracks added later are ignored.

For general information on entering and editing data in a track, see the following topics:

  • Entering Data in a Segment Track
  • Editing Data in a Segment Track
  • Positioning Data in a Segment Track


Tempo Track Properties

The tempo track Properties Window contains the following standard tabs:

  • Track Group Assignment Tab. This tab is read-only and simply shows that the tempo track is assigned to all track groups.
  • Flags Tab


Tempo Properties

Properties for a marker in the tempo track are shown in the following Properties Window.

Tempo Properties window

In the Tempo box, enter or select a value in the range from 1 to 1000. Values can be precise to two decimal places.

The Measure, Beat, and Tick boxes can be used to position the tempo marker.


Time Signature Track

Markers in the time signature track, also called the TimeSig track, govern the display of measure, beat, and grid lines in the editing windows of various tracks, and define the rhythm for purposes of Boundaries and Segment Alignment. If there is no time signature track, the time signature of the entire segment is 4/4.

A time signature track can only be assigned to a single track group, but you can insert a separate time signature track for each track group in a segment.

If a segment contains a style track, the time signatures for the segment are initially determined by the styles in the track. Each time you insert a style, the time signature of that style is automatically inserted in the time signature track. In any segment that contains a style track, you cannot edit the time signatures or insert new ones.

If a segment does not contain a style track, you can enter or edit time signatures. No more than one time signature per measure can be entered.

Note If you do not use a style track in a segment, make certain there is a time signature in measure 1. Without a time signature in the first measure, using the metronome during recording or playback will produce a quarter-note tick until the first time signature is reached in the segment. This occurs whether or not the time signature later in the segment has a note value other than a quarter note.

Time signatures include a grid setting for more precise placement of notes and cueing of events. Grid Divisions are shown in maximized sequence tracks.

Pattern tracks have their own time signatures, which can be edited on the Part tab of the Pattern Track Properties window.

See Also

  • Entering Data in a Segment Track
  • Editing Data in a Segment Track
  • Positioning Data in a Segment Track


Time Signature Track Properties

The time signature track Properties Window contains the following standard elements:

  • Track Group Assignment Tab
  • Flags Tab


Time Signature Properties

Each marker in the time signature track has the following controls in its Properties Window:

  • Time Signature

    Click this button to open the Set Time Signature and Grid Dialog Box.

  • Measure

    Measure in which the time signature takes effect.


Wave Track

The wave track contains sounds and variations. It is similar to a Pattern Track, but contains sampled sounds rather than notes, and does not respond to chord changes.

Waves can be mono or stereo waves, and can be set to play straight through a single time, or to loop one or more times.

A wave in a wave track is a reference to a wave (.wvp) file in the project tree. You can set Wave Properties for the playback of this instance of the wave, but changes do not affect the wave file. If you delete the file from the project tree, or close the project that contains the wave file, the wave will be removed from the wave track. The run-time wave (.wav) file must be distributed with the segment, either separately or embedded in a container.

Each wave track can contain one or more parts. Each part belongs to a specific PChannel, and appears as a separate strip in Segment Designer. For example, the following illustration shows a segment with a single wave track. The track contains two parts, Main Wave Part and Extra Wave Part, assigned to play over PChannels 33 and 34 respectively. The Main Wave Part contains two waves: CHIMES and APPLAUSE.

Waves in a wave track part

You can select one or more waves in the track. Selected waves are displayed in red.


Wave Track Properties

The Wave Track Properties Window contains the following standard tabs:

  • Track Group Assignment Tab
  • Flags Tab

In addition, the properties window contains the following tabs:

  • Wave Track Tab

    The Wave Track tab, shown in the following figure, contains settings for all parts in the track.

    Wave Track tab

    The tab contains the settings shown in the following table.

    Setting | Effect
    Attenuation | Attenuation, in decibels, of the original amplitude of the wave. This value is cumulative with the equivalent setting on the Wave Part tab for each part, and with the equivalent setting on individual waves.
    Lock variations to pattern track | If selected, the variation numbers for each part on this track are taken from a pattern part in the same track group and on the same PChannel. Whenever the wave part is to select a new variation (for example, because the part looped), it retrieves the variation number currently playing on the corresponding pattern part. If there is no corresponding pattern part, the wave part selects variations as usual.
    Reset variation order on play | If selected, variations play from the start of the cycle (as specified in the Play control on the Wave Part tab) each time the segment is played. If not selected, the cycle picks up where it left off. There is no effect on playback of variations in random order.

  • Wave Part tab

    The following tab contains settings that apply only to the active part.

    Wave Part tab

    The tab contains the settings shown in the following table.

    Setting | Effect
    Name | Name of the part, displayed on the track strip.
    PChannel | Number and name of the performance channel on which the part plays. The name is shared with all tracks and parts that play on this PChannel.
    Attenuation | Attenuation, in decibels, of the amplitude of the wave. This value is cumulative with the equivalent setting on the Wave Track tab.
    Play | Manner in which variations are selected each time the segment loops. See following table.
    Lock ID | Group identifier for parts whose variation numbers must always match. Parts with the same ID play in tandem, so each time a different variation plays in one part, all other parts in the locked group play their own variations of the same number. This mechanism is the same as Variation Locking for pattern parts.

    The following choices appear in the drop-down list in the Play control.

    Selection | Effect
    in random order | Variations are played randomly.
    in order from first | Variations are played in order, starting with the first.
    in order from random | Variations are played in order, starting from a random position.
    with no repeats | Variations are played randomly, but none is repeated until all have played.
    by shuffling | All variations are played, then shuffled and played again.


Parts and Layers in the Wave Track

Multiple wave sounds in a segment can be grouped at three levels:

  • Track

    All waves in the same track share properties on the Track Group Assignment, Flags, and Wave Track tabs of the Wave Track Properties window.

  • Part

    All waves in the same part share properties on the Wave Part tab of the Wave Track Properties window, as well as the properties on the other tabs. Every part plays on its own PChannel and has its own set of variations.

  • Layer

    Layers are simply a way of visually separating overlapping waves in a part. Waves in all layers are played whenever the part is played.

It is more efficient to organize multiple waves in parts within the same track than to put them in separate tracks. Use separate tracks only when necessary; for example, to assign different waves to different track groups.

By default, a new wave track contains one part, assigned to PChannel 1. To add parts, right-click anywhere in the track and select Add Wave Part(s). In the Add Wave Part(s) dialog box, select a PChannel and click Create New Part. When you have finished adding parts, click Close.

The following figure shows the a wave track with a single part in a maximized editing window.

Maximized Wave part

The part initially contains a single active layer with a selection button labeled a. There is an empty layer below it that is inactive and has a button without a label.

When you insert a wave in the a layer of the part, the label on its selection button turns dark. If you insert a wave in the unlabeled layer below, that layer is labeled b and a new unlabeled layer is created below it.

You can also create a new, labeled layer in any position by right-clicking a layer button and selecting Insert Layer on the shortcut menu. A new layer is created above the button you clicked, and all buttons below the new one are relabeled.

To remove a layer, right-click its button and select Delete Layer on the shortcut menu.


Inserting Waves in the Wave Track

You can add waves to parts by using the standard mouse and keyboard procedures, and by dragging waves from the project tree. You can insert only waves that are in the project tree as .wvp files, not waves in DLS collections. If you insert a wave by using the INSERT key or the shortcut menu, it is labeled "Empty" until you select a wave file from the drop-down list in the Wave Properties window.

Before inserting a wave in the track, you must select at least one variation. See Wave Variations.

For general information, see the following topics:

  • Entering Data in a Segment Track
  • Editing Data in a Segment Track
  • Positioning Data in a Segment Track

A wave can be longer than the segment that contains it. The wave continues to play its full length even after the segment reaches its end. You can also control whether a wave plays its full length when playback of its segment is interrupted or transitions while the wave is playing, by setting Don't Cut Off on the Performance tab of the Wave Properties window.


Replacing Waves in Multiple Wave Tracks

DirectMusic Producer provides a single-step procedure for replacing all references to a wave in all wave tracks in the project.

  1. Right-click on the internal icon of a wave component in the project tree.
  2. On the shortcut menu, click Replace.
  3. In the Open Wave dialog box, select a .wav or .wvp file.
  4. Click OK.

The new file replaces the selected one in the project tree, and all references in wave tracks are changed accordingly.


Wave Variations

For each wave part, you can create 32 variations using the variation buttons at the top of the part. This is very similar to using variations in a pattern part. See Part Variations.

For example, you can create a part that plays a different wave or group of waves each time the segment loops. The variation that plays when a segment loops is chosen in a random order, or according to an order that you specify.

The following figure shows a wave track with a maximized wave part, displaying the 32 Variation Buttons. The button for variation 1 is selected, which makes the variation active. Because no other buttons are selected, all other variations in the part are inactive. The CHIMES wave is contained only in variation 1.

After you design multiple variations for a part, you can use the Wave Part tab of the Wave Track Properties window to specify options for how they are selected during playback. You can also use the Variations tab in the Wave Properties window of a selected wave to assign it to different variations in the part.


Wave Properties

Settings for selected waves in a Wave Track are shown in the Wave Properties Window.

Note This is not the same as the Wave Component Properties window for a wave in the project tree.

The Wave Properties window contains the following tabs:

  • Wave Tab

    The Wave tab is shown in the following figure.

    Wave Properties Wave tab

    The Wave drop-down list shows all wave files in the project tree. Select the wave to place in the track.

    Settings in the Start and End row specify the current bar (measure), beat, grid, and tick for the beginning and end of the wave. If the wave does not contain any looping portion, the length of the wave in the track must be equal to or less than the length of the source wave. Note that the end of the wave can extend beyond the end of the segment and that the entire wave will play if the segment plays normally to the end.

    The button with the padlock icon beside the End row is used to lock the end position of the wave. When the end is locked, you can truncate the wave at the end by increasing the Start settings. Truncating the wave affects only the playback of this wave track, not the original file.

    When you change the Start values, the Source values under the End row adjust to show where the originally inserted wave would end using its normal length.

    Settings in the Length row specify the current length of the wave. These settings change automatically when you change the Start settings for the wave while the End settings are locked. You can also enter new values for the length, which will affect either the start or end position, depending on whether the end position is locked. Use the Lock button on this row to lock the length, so that the start and end settings move in tandem to maintain the length of the wave. You cannot lock the End settings when the Length settings are locked.

    The Source row beneath the Length row shows the length of the original wave. This information does not change.

    Settings in the Offset By row specify the point within the wave at which it starts playing. Setting a value greater than zero has the effect of truncating the beginning of the wave.

    The Samples area shows various measures of digital samples. From top to bottom, these values represent the number of samples in the following regions:

    • Between the offset (actual start) and end positions; that is, the number of samples that will actually play.
    • The original wave.
    • Between the start and offset positions.
  • Loop Tab

    The Loop tab is shown in the following figure.

    Wave Properties Loop tab

    The Loop tab provides options for selecting a portion of the wave to be played repeatedly when playback is looped. Loop settings are saved in the run-time segment file, not in the source wave file.

    Select the Loop check box to activate the looping option. This has the effect of copying the looped portion in the wave display as many times as it will fit, depending on the length of the wave as set on the Wave tab. If you later increase the length, more copies will be made. No part of the source wave that falls after the looped portion will play, because the looped portion plays repeatedly until the end of the wave as specified on the Wave tab.

    The Start and End values specify the beginning and ending points of the looped portion in bars (measures), beats, grids, and ticks.

    The Length values specify the length of the looped potion. These settings adjust automatically when you change the start or end settings for the loop. When you enter new settings for the length, the End setting adjusts automatically. You can click the Lock button to lock the length, so that the start and end settings move in tandem to maintain the length of the wave.

    The Samples area of the window shows which digital samples are used to play the wave loop. Information in the upper box shows the position of the first sample used in the loop, and adjusts when you change the start time of the loop. Information in the middle box shows the position of the last sample used in the loop, and adjusts when you change the end time of the loop. Information in the lower box adjusts when you change the length of the loop. You can change the settings in the Samples area to adjust the start, end, and length of the loop.

  • Performance Tab

    The Performance tab is shown in the following figure.

    Wave Properties Performance tab

    This tab contains the settings shown in the following table.

    Setting | Purpose
    Attenuation | Attenuate the volume of the wave for playback, measured in decibels (dB). A setting of 0 plays the wave at its original volume. The lowest setting of –96.0 dB reduces the volume to silence. This value is cumulative with any attenuation set for the wave track and the part.
    Fine Tune | Change the pitch of the wave during playback. Measurement is in semitones. The highest setting of 12.00 raises the pitch one octave. The lowest setting of –12.00 lowers the pitch one octave.
    Don't Cut Off | Specify that after a wave starts playing in a segment, the wave is not cut off before it is finished. See Cut Off and Invalidation of Notes or Waves.
    Belongs To | Specify the measure and beat that a wave belongs to, which lets you physically place the wave to play on a beat, but associate it logically with another beat. See Belongs to Beat.

    Note To restore the default settings for Attenuation or Fine Tune, click on the slider while pressing CTRL.

  • Variations Tab

    The Variations tab in the Wave Properties window is shown in the following figure.

    Wave Properties Variations tab

    Use this tab to assign the wave to as many variations as you want by selecting the variation numbers. For more information, see Wave Variations.


Band Editor

The Band Editor component of Microsoft DirectMusic Producer enables you to modify Bands, which are used to define the instruments and other settings on Performance Channels (PChannels) as a segment is played.

To open the Band Editor Window, double-click a band in the project tree or in a Band Track. You can also open the window for a band in the project tree by selecting the band and pressing ENTER.


About Bands

Bands are used to change settings on PChannels. Although often used to make patch changes—that is, to assign different instruments to play notes—they can also be used to change settings that affect wave playback as well as notes, such as pan and volume.

Bands can exist in three different places in DirectMusic Producer:

  • In the project tree, as a standalone component whose working file is saved with the extension .bnp.
  • In the project tree, in the Bands folder of a style or motif. One of the bands in a style is designated the default band for the style. Placing other bands in a style makes them available for auditioning in Style Designer and also makes them available to any application using the style. A motif's band plays when the motif is played.
  • In the Band Track of a segment. Bands are entered automatically when a style is inserted in the Style Track and when a MIDI file is imported as a segment. You can also insert bands manually. Bands in segments are not separate components, and do not appear in the project tree.

You can create and edit a band in any of these locations. Changes apply only to the band being edited, not to any other one from which it was derived, even one with the same name.

Bands can be moved and copied between different nodes in the project tree, and any band in the project tree can be copied to a band track simply by dragging it. Bands can also be moved and copied from one segment to another in Segment Designer.

For information on creating and copying components in the project tree, see Managing Components.

A band can contain settings for as many as 999 PChannels. The set of PChannels in a band is the set on which changes are to be made, not necessarily the complete set of PChannels in use. For example, if PChannel 50 is already being used to play a trumpet sound, and a new band contains settings only for PChannels 1 to 16, any notes on PChannel 50 will continue being played by the trumpet, using whatever settings were last applied to it.

The instrument sound you assign to a PChannel can be from any of the following sources:

  • The General MIDI DLS collection (GM.dls) of downloadable waveform sounds, provided with DirectMusic Producer.
  • A General MIDI sound set contained in a hardware MIDI sound device, such as a sound card or external MIDI keyboard.
  • Another DLS collection in the project tree.

The GM.dls collection is available on every system that has the DirectMusic run-time files. Designing bands that use only this collection ensures that they will sound the same on all systems without the need to install other DLS collections.

Note For more information about legal issues related to using the GM.dls., click the copyright link at the bottom of this page. In addition, for any component you use, read copyright information contained in the Info Tab of the Properties window for the component.


Creating a Band

When designing bands, you have a choice of modifying an existing band or creating a new band. Working with an existing band has some advantages because some instruments and properties do not have to be set again. If you choose to modify an existing band in the project tree, use the Save As command to save the modified band in the project tree under a new name.

An existing band might have more PChannels activated than you intend to use in the new band. For this reason, you may prefer to create a new band based on the Default New Band, in which all PChannels are inactive. As you modify the settings for PChannels in Band Editor, the channels are activated.

  • To insert a new band as a standalone component, click New on the File menu.
  • To insert a new band in a style, right-click the Bands folder and select New Band.
  • To insert a new band in a Band Track, click a measure in the track and press the INSERT key, or right-click and select Insert on the shortcut menu.


Default New Band

The following illustration shows the default settings in the Band Editor Window for every new band that DirectMusic Producer creates.

Default new band

The default band has the following settings:

  • Of the available 999 PChannels, 16 are included in the band. The illustration shows the default names of the PChannels, which are the same as the numbers. However, these names may have been changed in another component. Names of PChannels are global throughout a project.
  • All PChannels are inactive, with properties shown in gray. This does not mean that the PChannels cannot be used; it means only that their existing properties will not be changed by the band. You can activate and deactivate selected properties in the band by using the PChannel Properties window.
  • PChannels 1 through 9 and 11 through 16 are assigned to play the General MIDI piano patch 1.
  • PChannel 10 is assigned to play a standard General MIDI drum set patch.
  • All PChannels are set to play without octave transposition or transposition by an interval.
  • Unified volume and pan controls for each PChannel are set at arbitrary values to make all buttons visible. When you drag a button, most properties for the PChannel become active.


Band Properties in the Project Tree

The Properties Window for a band in the project tree contains one setting and one button:

  • Band Name

    The name of the band as it appears in the project tree and, by default, in any band track where you place a copy of it.

  • Edit GUID

    Click this button to display the Edit GUID Dialog Box.

The Properties window for a band in the project tree is not the same as the Band Properties window for an object in the Band Track. A band in a band track is not a separate component and does not have a GUID.


Band Editor Window

The Band Editor window is divided into two sections:

  • PChannel List

    At the left of the Band Editor window, the PChannel list shows the PChannel names and basic data about the instrument assignment for up to 999 PChannels.

  • Volume and Pan Graphical Interface

    At the right of the Band Editor window, the graphical interface region contains a unified volume and pan mixing button for each PChannel. Use the buttons to adjust the pan and volume balance in the band.


PChannel List

The left section of the Band Editor window contains a list of the PChannels in the band. PChannels are listed in order, from lowest to highest according to their channel number. You can use the PChannel list in three ways:

  • Scroll through the list to view basic information about all PChannels in the band, such as a PChannel's name and instrument sound.
  • Right-click a PChannel and click Properties on the shortcut menu, or double-click a PChannel, to open a PChannel Properties window and edit settings for the channel.
  • Right-click the list to add or delete PChannels.

The following figure shows a PChannel list.

Settings in gray are inactive; that is, they will not affect the current properties of the PChannel when the band is played.

The PChannel settings are displayed in the following columns:

  • PCh#

    Number of the channel. This value cannot be edited. See PChannel Number.

  • PCh Name

    Name of the PChannel, used throughout the project. See PChannel Name.

  • Instrument

    Instrument assigned to the PChannel by the band. See PChannel Instrument Assignment.

  • Oct and Trans

    Settings for transposing the pitch. See PChannel Octave and Interval Transposition.

  • Priority

    Rank of the channel used in determining which channels are dropped when not enough voices are available on the port. See PChannel Priority.


To add a PChannel to a band

There are two ways to add a PChannel:

  • To add the lowest unused PChannel number, right-click the PChannel List and click Insert a PChannel on the shortcut menu.
  • To add a specific PChannel number, right-click the PChannel list and click Add/Remove PChannels on the shortcut menu. The Band Editor Add/Remove PChannels Dialog Box is displayed.


To delete one or more PChannels from a band

There are two ways to delete PChannels:

  • Select one or more PChannels in the the PChannel List and press DEL, or right-click one of the selected PChannels and click Delete PChannel(s) on the shortcut menu.
  • Right-click the PChannel list and click Add/Remove PChannels on the shortcut menu. The Band Editor Add/Remove PChannels Dialog Box is displayed.


Volume and Pan Graphical Interface

The right section of the Band Editor window is a graphical interface you can use to balance the relative volume of the instruments in the band and to adjust the left and right pan positions for each instrument. The interface is shown in the following illustration.

Volume and Pan Graphical Interface

Each PChannel in a band has a unified volume and pan mixing button that adjusts both the volume and pan setting of the channel. If the number on the button is gray, the channel is inactive. It becomes active as soon as you make any changes.

Select PChannels by clicking on their buttons or by selecting the corresponding PChannels in the PChannel List. You can select multiple buttons by pressing CTRL while clicking, or by dragging the cursor around them. Selected buttons are red. Drag a button vertically to adjust the volume of all selected PChannels, and drag it horizontally to adjust the pan setting.

The upper and lower edges of the window represent high and low MIDI volume settings of 127 and zero respectively. The center axis on the grid represents a median MIDI volume setting of 64.

The left and right edges of the window represent hard left and hard right pan settings, equal to settings in the Properties Window of L63 and R64 respectively. The center axis on the grid represents a center pan setting.

For more information, see PChannel Volume and Pan.

You can also edit the volume and pan settings for a PChannel by opening the PChannel Properties window. As you edit the volume or pan properties of a PChannel, the buttons in the graphical interface move accordingly.


Band Editor Add/Remove PChannels Dialog Box

The Add/Remove PChannels dialog box, shown in the following figure, is used to modify the set of PChannels used by a band, as shown in the PChannel List.

NEED TO ADD ALT TEXT

The dialog box contains the following elements:

  • PChannels

    List of channels in use by the band. Select one or more PChannels to be removed.

  • Remove Selected

    Click this button to remove PChannels you have selected in the list.

  • PChannel

    Number of a PChannel to add. Enter or select a number in the range from 1 to 999. Only unused PChannels can be entered or selected.

  • Add

    Click this button to add the PChannel.

Note Removing PChannels from a band does not make them inactive when the band is played. It only means that the band does not make any changes to the settings of those PChannels.


PChannel Properties

The following Properties Window is used to view and edit settings for selected PChannels.

NEED TO ADD ALT TEXT

The window contains the following settings:

  • PChannel Number
  • PChannel Name
  • PChannel Priority
  • PChannel Instrument Assignment
  • PChannel Volume and Pan
  • PChannel Octave and Interval Transposition
  • PChannel Pitch Bend Range
  • PChannel Range
  • Always Use the Default GM Set

Note Volume and Pan can also be edited by using the Volume and Pan Graphical Interface.

As with other objects, you can edit multiple selected PChannels in the single Properties window. If you change a setting, the value you enter is applied to all the selected PChannels. If you leave a setting unchanged, the property is left unchanged in the individual PChannels of the selected group.


PChannel Number

Enter or select a new number for the PChannel. By changing the number, you are in effect deleting a PChannel from the band and adding a new one. You cannot enter or select a number that is already in the band.

Every 16th PChannel, starting with number 10, is reserved for percussion instruments. Percussion instruments are handled differently from other instruments, in that a family of instruments is assigned to a channel, and individual instruments are assigned to each pitch. The complete list of PChannels reserved for percussion is as follows.

Percussion channels
10 | 170 | 330 | 490 | 650 | 810 | 970
26 | 186 | 346 | 506 | 666 | 826 | 986
42 | 202 | 362 | 522 | 682 | 842 |
58 | 218 | 378 | 538 | 698 | 858 |
74 | 234 | 394 | 554 | 714 | 874 |
90 | 250 | 410 | 570 | 730 | 890 |
106 | 266 | 426 | 586 | 746 | 906 |
122 | 282 | 442 | 602 | 762 | 922 |
138 | 298 | 458 | 618 | 778 | 938 |
154 | 314 | 474 | 634 | 794 | 954 |


PChannel Name

The PChannel name is used in DirectMusic Producer to identify the channel throughout the project.

By default, the name of a PChannel is the same as its number. You can assign any descriptive name you like, such as "Flute" or "Sound Effects."

Note The name can also be changed in the Properties window for objects other than bands, such as the Wave Track Properties window. Regardless of where the property is set, it applies to the PChannel everywhere in the project.


PChannel Instrument Assignment

In Band Editor, you can assign a instrument sound, also called a patch, to each PChannel. The instrument sound you choose determines the timbre of the channel when it is being used to play notes. Timbre refers to the tone quality or color of the sound.

Most instrument sounds are identified according to the acoustic instrument they simulate, such as the trumpet or violin. Some sets of instrument sounds contain multiple variations of an instrument, such as bright trumpet or muted trumpet. In addition, there are some sounds that are not based on an instrument, but are more appropriately referred to as sound effects. For example, the default Gm.dls instrument collection includes several sound effects such as bird and helicopter noises. In a band, sound effects are also referred to as instrument sounds, even though they are not necessarily based on musical instruments.

In the PChannel Properties window, click the Instrument check box to enable or disable an instrument change on the PChannel. If this check box is selected, notes in a part or pattern playing on the PChannel are played by the selected instrument. If it is not, notes on the PChannel play on whatever instrument was last assigned.

Note Deselecting the Instrument check box does not disable the playback of notes on the channel.

The instrument assigned to the PChannel is shown on the button labeled "Assign instrument" in the following figure. Click this button to choose a different instrument sound.

Clicking the button displays a menu of instrument families. The menu contains several lists in which you can select one of 254 GM/GS instrument sounds. You can also select an instrument sound from another DLS collection in the project.

The name of the sound set that contains the instrument sound, and the patch number information for the sound, are displayed in the gray area to the right of the instrument assignment button.

Following the name of the sound set, the complete patch number information for the instrument sound is enclosed in parentheses. For more information, see Patch Numbers and Bank Select.

When you select a sound from the GM list in the instrument family menu, the sound set is shown as "GM", the MSB and LSB numbers are zero, and the patch number is the standard MIDI patch number for the General MIDI sound you choose.

If you select a sound from the GS set, the sound set is shown as "GM", and the MSB number is something other than zero to show that a different bank of instrument sounds is in use.

Any time the link to the sound set has become broken, the sound set is shown as "Unknown". This can happen if the sound is from a DLS collection no longer included in the project tree.

Note You should never set a component in one project to refer to a component in a different project. Doing so puts the data in your files at risk. For example, it is recommended that all DLS collections used in a band be included in the same project as the band. However, when you use the default GM.dls collection, it is not necessary to load the collection into the project tree.


To assign an instrument sound to a PChannel

  1. In the Properties window for the PChannel, click the Instrument check box to enable the button directly beneath it.
  2. Click the button.
  3. On the instrument family menu, shown in the following figure, click an instrument group.

    Instrument family list

    When a family is selected from this list, a submenu of instruments is displayed. Proceed to the next step.

    The menu differs for PChannels reserved for percussion, as shown in the following figure.

    Percussion family instrument list

    For these channels, you assign an instrument family to the PChannel, and individual instruments are automatically assigned to notes.

    To choose an instrument sound from a different DLS collection, click Other DLS. The Choose DLS Instrument Dialog Box is displayed.

  4. On the instrument list, select an instrument. To select a GS instrument from the GM/GS Sound Set provided by the Roland Corporation, click GS and select an instrument from the GS list. These instrument lists are shown in the following figure.

    GS instrument list

When you choose an instrument sound that is included in a standard list of GM or GS sounds, the corresponding instrument sound in the default GM DLS collection is used. If playback for the PChannel is set to use a sound in a GM hardware playback device, the corresponding GM/GS sound in the hardware device is used.

Note A different menu is displayed if the PChannel you are editing is reserved for percussion instruments. For a list of reserved channels, see PChannel Number.


Choose DLS Instrument Dialog Box

The following dialog box is displayed when you select Other DLS on the instrument family menu.

Choose DLS Instrument dialog box

The dialog box contains the following elements:

  • DLS Collections

    All collections in the project tree. Select a collection from the drop-down list.

  • Instruments

    All instruments in the selected collection. Select an instrument in the list.

  • Bank Hi, Bank Lo, and Patch

    Settings for the bank select and patch numbers of the instrument. For more information, see Patch Numbers and Bank Select.


PChannel Volume and Pan

The volume setting of a PChannel controls its relative volume compared to other PChannels in the band. The pan setting controls the relative volume of the PChannel on the left and right speakers.

Note Volume and pan settings for the instruments in a band are often made by Continuous Controllers contained in separate parts of a segment or pattern. Changes you make in a band can be overridden by continuous controllers. For more information, see Conflicts Between Bands and Continuous Controllers.

Volume and pan settings for a PChannel can be set in either the PChannel Properties window or by using the Volume and Pan Graphical Interface. Editing the volume and pan settings in the Properties window is useful for making fine adjustments. The graphical interface is handy for adjusting the relative balance and pan positions for all instruments in the band while listening to the band play a segment or style, and for adjusting the settings for several PChannels at once.

The Properties window contains the following settings for volume and pan:

  • Vol check box

    If selected, the volume setting is applied. If not selected, the previous setting continues to be used.

  • Vol

    Volume, in the range from 0 through 127.

  • Pan check box

    If selected, the pan setting is applied. If not selected, the previous setting continues to be used.

  • Pan

    Pan, ranging from L63, corresponding to a hard left pan setting, to R64, corresponding to a hard right pan setting.


PChannel Octave and Interval Transposition

If the instrument patch selected for a PChannel needs to transpose the pitches it plays either higher or lower by a fixed interval, or if an instrument's notes are written at a transposed pitch in a style or segment, you might need to set playback to account for the transposition. You can set the playback transposition of an instrument's pitch, higher or lower, in octave increments and in half-step increments using the following settings in the PChannel Properties window:

  • Transpose

    If this check box is selected, new transposition settings are applied. If not selected, the previous settings continue to be used.

  • Oct

    Number of octaves by which the instrument part should be transposed. This value must be a whole number in the range from –4 to 4, where a negative number indicates a transposition downward, and a positive number a transposition upward.

  • Int

    Interval by which the instrument part should be transposed. Possible values range between a minor 2nd and a major 7th. A minus sign indicates a transposition downward; otherwise the transposition is upward. Alternatively, you can type a number between –11 and 11 to represent the number of half steps for the desired transposition. This number will be changed to the standard notation when the text box is deselected.

You can combine the values in the Oct and Int boxes to express large intervals as a number of octaves plus an interval. For example, an interval of a major 10th could be defined by entering 1 in the Oct box and ma3 in the Int box.

If you enter a positive value in the Oct box, the Int box always shows a transposition interval that is either zero or a positive number. If you enter a negative value in the Oct box, the Int box always shows a transposition interval that is either zero or a negative number. If you enter an Oct value of zero, the full range of transposition intervals from -ma7 to ma7 is available.

For example, if you start with an Oct setting of +3 and an Int setting of zero, and reduce the Int value by one increment, an Oct setting of +2 with an Int setting of ma7 is produced, instead of Oct +3 and Int -mi2. Even if you explicitly enter a negative interval in the Int box, the Oct setting and the Int setting are reinterpreted to follow this rule.

While playback of previously entered notes is always consistent, different results can occur during playing or MIDI capture when you use transposed instruments. For example:

  • When in step-record mode or when you click the piano roll notation pitch guide, MIDI data is played back with transposition.
  • When not recording, or when recording in real time to a low-latency output port, MIDI data is passed from the keyboard to the PChannel without transposition.


PChannel Pitch Bend Range

The following settings in the PChannel Properties window specify how far a maximum pitch bend, as set by Continuous Controllers, changes the pitch:

  • PB Range

    If this check box is selected, new pitch bend range settings are applied. If not selected, the previous settings continue to be used.

  • Oct

    Number of octaves by which the instrument part can be transposed. This value must be a whole number in the range from 0 to 10.

  • Int

    Interval by which the instrument part can be transposed. Possible values range between a minor 2nd and a major 7th. A minus sign indicates a transposition downward; otherwise the transposition is upward. Alternatively, you can type a number between –11 and 11 to represent the number of half steps for the desired transposition. This number will be changed to the standard notation when the text box is deselected.

The Oct and Int text boxes work in tandem just as they do in the PChannel Octave and Interval Transposition group. The maximum range is 127 semitones, which is 10 octaves plus a 5th. The minimum range is 0, which means that pitch bend has no effect at all.

The range applies both above and below the note. A range of one octave, for example, means that the note can be bent from one octave lower to one octave higher, not that the entire range of possible pitches is only one octave.


PChannel Range

The high and low range settings in the PChannel Properties window provide a way to minimize unnecessary loading of wave data into the temporary memory of the synthesizer.

Most DLS sounds use multiple waves to produce notes in different pitch ranges. The Region Settings of the instrument specify which wave is associated with each region of the full scale. If you know that the instrument assigned to a PChannel will not be used above or below certain pitches, you can specify a high and low range for the PChannel. Any waves used in the DLS instrument that are not assigned regions within that range are not loaded into the memory of the synthesizer, thus saving time and conserving resources.

When setting the range limits, keep in mind that notes in a part often transpose when encountering chords in a segment. For example, a flute part may be transposed to play very high notes when encountering a chord built on a root of 2 Bb or 2 B. See Inversion Boundaries and How a Pattern Interacts with a Chord.

The following settings in the Properties window affect the downloading of DLS sounds:

  • Range

    Select this check box to create a new range. If it is not selected, the setting remains unchanged.

  • Hi

    Enter or select the value of the highest pitch for which DLS data is needed.

  • Lo

    Enter or select the value of the lowest pitch for which DLS data is needed.

Possible values for Hi and Lo are in the range from C0 to G10. You can also enter a MIDI note value in the range from 0 to 127, and this will be converted to a pitch name when the text box is deselected. For more information, see Pitch Names and MIDI Numbers.


PChannel Priority

The number of voices on playback devices is limited. This means that there is a limit to the number of notes that can be played simultaneously. When segments are played, the number of notes on any beat could exceed the playback capabilities of the output port.

There are several situations when playback of DirectMusic Producer files can exceed the voice capacity of an output port. These include:

  • Complex chords with many voices
  • Several instrument parts sounding simultaneously on one beat
  • Sustaining notes from a previous beat when new notes begin
  • Playing multiple segments at a time

The Microsoft Synthesizer supports up to 1000 voices. Other devices might support more or fewer.

If playback of a file or group of files exceeds the maximum number of voices for a port, the device must use voice stealing, in which voices are taken from one channel for use by another. Each playback device and synthesizer has its own method for managing voice stealing, and for giving priority to some notes in a performance when more voices are required than are available.

In addition to the limitation on voices, there are other times when not enough memory is available to fully play a performance. For example, if the combination of multiple files being processed by DirectMusic results in excessive memory use, there may not be sufficient memory available to store all DLS sounds and all playback information at one time. This may force DirectMusic to omit some PChannels from playback.

If you are using a DirectMusic-compatible output port, including the Microsoft Synthesizer, the port can make use of the priority setting you assign to each PChannel. If the PChannel group exceeds its voice allocation or PChannels need to be dropped for some other reason, the PChannels with the lowest priority are dropped.

The following priority settings are available in the PChannel Properties window:

  • Priority check box

    Select this check box to set the priority. If it is not selected, the setting remains unchanged.

  • Priority drop-down list

    Select one of the priorities shown in the following list.

    Setting | Use
    Critical | Can be assigned to a PChannel without which a piece could not play, such as a PChannel that contains the lead melody.
    High | Can be assigned to a PChannel that constitutes an important part of a piece, such as a PChannel that is part of the harmonic accompaniment.
    Standard | Default setting for all PChannels.
    Low | Can be assigned to a PChannel that plays a noncritical background part.

    With a Critical setting, a PChannel has the greatest possibility of always being included in playback. With a Low setting, a PChannel has the greatest likelihood of being omitted from playback.

  • Priority text box

    Enter or select a value to weight the priority of the PChannel relative to other PChannels that have the same priority category. The higher the value, the greater the priority. The 16 PChannels in the Default New Band are weighted as shown in the following table.

    PChannel | Weight
    1 | 14
    2 | 13
    3 | 12
    4 | 11
    5 | 10
    6 | 9
    7 | 8
    8 | 7
    9 | 6
    10 | 15
    11 | 5
    12 | 4
    13 | 3
    14 | 2
    15 | 1
    16 | 0

See Also

  • Voice Allocation


Always Use the Default GM Set

In the PChannel Properties Window, select the Always Use the default GM set for this instrument check box to ensure that the instrument sound in the default General MIDI DLS collection (GM.dls) is used for the PChannel. An instrument in another sound source, such as another GM collection in hardware, cannot be substituted.

This setting is ignored for instruments that are not in the GM.dls collection.


Auditioning a Band

Auditioning a band requires musical material from a style or a segment. The quickest way to audition a band is to open a style or a segment that contains the band to audition and play the style or segment. You can edit the band and hear the changes immediately.


To play a style using one of its bands

  1. In the project tree, double-click a style to open the Style Designer Window.
  2. To audition a band not yet in the Bands list, drag the band from the project tree to the Bands list of the displayed style.
  3. Click the Bands list to choose a band.
  4. In the Style Designer window, select a pattern.
  5. In the Transport Controls box, click the Start button.


To audition a band using a segment

  1. In the project tree, double-click a segment of imported MIDI data. The Segment Designer window is opened.
  2. To audition a band not already in the first measure of the band track, drag the band from the project tree to the first measure of the band track. Any band on the first beat is overwritten by the new band.

Note To avoid losing band information already in a segment that you want to use only for audition purposes, make a copy of the segment before making changes to the band track.

  3. To avoid confusion during playback, delete all other bands from the band track.
  4. In the Transport Controls box, click the Start button.


Conflicts Between Bands

A PChannel can use only one instrument sound and one set of PChannel properties at a time during playback. When you design a band and assign an instrument sound to a PChannel, you must keep in mind that other bands may be using the same PChannel with a different instrument assignment. In this case, there will be a conflict between the bands when they are used simultaneously during playback.

For example, suppose an application plays a primary segment that assigns PChannel 1 to a piano at center stage. While the segment is playing, you play a secondary segment containing a band that assigns PChannel 1 to a trumpet at stage right. In this case, the sound for the PChannel changes as playback reaches the secondary segment's band, and the piano notes in the primary segment are suddenly taken over by the trumpet.

If a band does not contain any settings for a PChannel, then settings for that PChannel are not affected when the band is reached. Also, PChannel settings can be applied selectively by a band. For example, a band can change the pan setting without touching the volume or instrument assignment. For more information, see PChannel Properties.

You can avoid band conflicts by assigning unique PChannels to each of the different instrument sounds in every band used in the project. Use the PChannel names, which are global throughout the project, to keep track of which sounds you have assigned to PChannels.

Another way to avoid conflicts is to put all bands in special segments that you use to control PChannel settings. The other segments do not contain bands. You can use this method regardless of whether the segment containing the band is a primary segment or a secondary segment. Similarly, it does not matter if you designate a segment as a controlling segment.


Conflicts Between Bands and Continuous Controllers

Volume and pan settings can be included in Continuous Controllers contained in a Sequence Track, Pattern Track, or a pattern part in Pattern Editor. Such settings can create unexpected results when you play a segment or style. For example, if you make changes to volume and pan settings in a band file, they can appear to work only for a short time. This is because they are overridden by settings in the continuous controllers, which are hidden from view unless you open the track or part for editing.

This problem occurs frequently with imported MIDI files. When you import a MIDI file as a segment or a style pattern, a band containing instrument sound assignments is inserted into the first measure of the band track. However, the volume and pan settings in the PChannel Properties window for all PChannels in the band are inactive. These settings are actually controlled by continuous controller curves.

Note The track might contain only a single instantaneous curve at the beginning of the first measure. This can be difficult to see, but you can click on it and open its Properties Window.

Continuous controller settings are not overridden by settings in a band. As a segment or style plays, the most recent settings are used for volume and pan, regardless of whether those settings occur in a band or in a continuous controller track. To use volume or pan settings in a band without their being affected by settings in continuous controller tracks, you must delete the curves in the tracks, or delete the CC tracks themselves.


Style Designer

This section describes the use of Style Designer, which is used to manage the components and properties of Styles.

See Also

  • Band Editor
  • Pattern Editor
  • Managing Components


About Styles

A style is a collection of melodic, rhythmic, and instrumental information that can be combined dynamically to produce a piece of music.

Unlike a MIDI-based segment, a style-based segment is not based on a fixed score. Variability comes from the following factors:

  • Different patterns are selected from the style. The combination of patterns can be different each time the segment plays.
  • Patterns are played with variations.
  • Notes are transposed according to the underlying chord. This means that a pattern can sound different when it occurs in different places in the segment.

The following figure shows the structure of a simple style.

The style contains the following elements:

  • Patterns

    Sequences of notes that can be transposed by the application of chords in the Chord Track of a segment. Patterns have several properties that determine when they can appropriately be played; for example, one pattern might be used only as an introductory phrase, while another might be suitable for an exciting moment in a game.

  • Variations

    For added interest and variability, a pattern can contain as many as 32 variations in each part. When DirectMusic plays a pattern, it selects a variation more or less at random, depending on limits you set. You can control which chords each variation will play with, and whether a variation has to be played in its entirety.

  • Embellishments

    Special patterns such as intro, fill, break, and end, for use at specific points in the performance, such as at transitions.

  • Motifs

    Special patterns that can be played explicitly by applications, typically layered over other sounds.

  • Bands

    Collections of program settings for PChannels. Each style has a default band that is inserted in the Band Track of a segment when the style is inserted in the Style Track. Additional bands are available to applications that load the style, and can also be used to audition patterns within DirectMusic Producer.


Style Properties in the Project Tree

The Properties Window for a style selected in the project tree contains the following two tabs:

  • Style Tab

    Name, rhythm, and category of the style.

  • Info Tab

    Standard tab containing reference information about the component, such as author and copyright.

Note This Properties window is not the same as the Style Properties window for a style reference in a Style Track.

In some cases, a property can be edited directly in the Style Designer window or the project tree. The following table lists the properties and where you can edit them.

Property | Edit in the Style Properties window? | Edit in the Style Designer window? | Edit in the project tree?
Name (internal) | Yes, in Style Tab | No | Yes
Tempo | Yes, in Style Tab | Yes | No
Time Signature | Yes, in Style Tab | Yes | No
Grid | Yes, in Style Tab | Yes | No
Category | Yes, in Style Tab | No | No
Subject (optional) | Yes, in Info Tab | No | No
Author (optional) | Yes, in Info Tab | No | No
Copyright (optional) | Yes, in Info Tab | No | No
Version (optional) | Yes, in Info Tab | No | No
Information (optional) | Yes, in Info Tab | No | No


Style Tab

The Style tab in the Properties window for a style in the project tree contains the following settings:

  • Name

    Name of the style. This name is saved in the run-time file and is accessible by applications.

  • Tempo

    Tempo, in beats per minute.

  • Time Signature and Grid

    Click to open the Set Time Signature and Grid Dialog Box.

  • Category

    Music genre of the style. Pick a category from the drop-down list. This descriptive text is not used elsewhere and is not saved in the run-time file.


Style Designer Window

The Style Designer window, shown in the following figure, is opened when you create a new style or double-click an existing style in the project tree.

Style Designer Window

The window shows miscellaneous information about the style in the top bar. Below that is a list of patterns. In the bottom pane is a list of motifs.

Using the Style Designer window you can do the following:

  • Set the time signature and grid

    See Setting a Style's Time Signature and Grid.

  • Set the tempo

    See Setting a Style's Tempo.

  • Choose a band

    See Setting a Style's Band.

  • Insert, copy, and delete patterns, embellishments, and motifs

    You can insert new patterns, embellishments, and motifs, delete unwanted patterns, embellishments, and motifs, or paste patterns, embellishments, and motifs from other styles. For more information, see Managing Patterns and Motifs in Style Designer.

  • Set lengths, groove ranges, and chord rhythms for patterns

    Select a pattern and open the Properties Window to set Pattern Properties.

  • Open a pattern or motif to edit it

    Double-click a pattern to open Pattern Editor.


Default New Style

The following figure shows a new style in the Style Designer Window.

The default new style contains the following elements:

  • A single band, which is the default band for the style. For information about the initial properties of this band, see Default New Band.
  • A single pattern called Pattern1. For information about the initial properties of this pattern, see Default New Pattern.
  • Time signature of 4/4.
  • Grid using the eighth note division, as shown by the musical note.
  • Tempo of 120 beats per minute.

No embellishments or motifs are included in a new style.


Setting a Style's Time Signature and Grid

Edit a style's time signature and grid in the Style Designer window by clicking the Time Signature/Grid button, shown in the following illustration.

Time Signature/Grid button

Clicking the button opens the Set Time Signature and Grid Dialog Box.

The same button is also available in the Properties Window for Style Properties in the Project Tree.

You can set the time signature and grid for individual pattern parts by clicking the similar button on the Part Properties window.


Setting a Style's Tempo

The tempo of a style can be changed in the following places:

  • In the Properties Window for Style Properties in the Project Tree
  • In the Current Tempo Box when the style is selected in the project tree
  • In the Tempo box at the top of the Style Designer Window

Tempo is measured in beats per minute. Possible values are in the range from 1 through 1000, to a precision of two decimal places.


Setting a Style's Band

Select the current band, for auditioning purposes only, from the band list in the Style Designer Window.

To add a band to the list, add it to the style in the project tree, or drag it to the list box from the project tree.

Define the default band by selecting a band in the drop-down list and selecting the Default check box to the right of the list. The default band is inserted in the Band Track of a segment whenever the style is inserted in the Style Track. It is also used to play the style when no other band has been specified.


Managing Patterns and Motifs in Style Designer

You can manage the set of patterns and motifs in a style either in the project tree or in the Style Designer Window.

To insert a new pattern or motif in the Style Designer window, click anywhere in the appropriate pane and press the INSERT key or click Insert on the Edit menu. This method creates an empty Default New Pattern. For a method that provides more options, see Creating Patterns and Motifs in the Project Tree.

To delete, cut, or copy a pattern or motif in Style Designer, click it and select the appropriate command from the Edit menu, or use the standard keyboard shortcuts.

To paste a pattern or motif from the Clipboard, click anywhere in the appropriate pane, and press CTRL+V, or click Paste on the Edit menu.

Although patterns and motifs play different roles, they are all patterns, and can be moved or copied from one pane to the other.


Creating Patterns and Motifs in the Project Tree

Creating patterns and motifs in the project tree gives you more options than creating them in the Style Designer Window.

To create a new pattern or motif in the project tree, right-click on the style component to display the shortcut menu shown in the following figure.

You can also use the shortcut menu for the Motifs or Patterns folder of the style.

On the shortcut menu, select one of the following:

  • Motif or Pattern

    These choices are called New Motif and New Pattern on the shortcut menus for the Motifs and Patterns folders.

    A dialog box similar to the following figure is displayed.

    New Pattern dialog box

    Select Create an empty pattern (motif) to insert a pattern or motif not based on any existing pattern.

    Select Create a pattern (motif) with parts linked to an existing pattern or motif to insert a pattern or motif copied from the pattern or motif you select from the list. All the properties, parts, notes, continuous controllers, and variation switch points are copied from the source, and all the parts are linked to their copies. Later, you can selectively unlink parts if you like. For more information, see Linking Parts.

    Note When you create a linked pattern, it takes all its properties from the pattern or motif it is linked to. However, the properties themselves are not linked, and can be changed for each pattern independently.

  • Import MIDI File as Motif or Import MIDI File as Pattern

    The Import MIDI File to Pattern (Motif) dialog box is displayed. Locate the MIDI file and click Open.

    The MIDI file is imported in its entirety, including all notes, continuous controller data, tempo, and length. The instrument patch and channel assignments are imported into the style as a band. However, the volume and pan settings imported with the MIDI file are contained in continuous controller tracks. For more information, see Conflicts Between Bands and Continuous Controllers and Importing a MIDI File as a Segment.


Pattern Properties

The following Properties Window shown in the following figure contains settings for a pattern in the Style Designer Window.

Pattern Properties window

The window contains the following settings:

  • Pattern Name

    Name of the pattern, used within DirectMusic Producer.

  • Length

    Length of the pattern. Click the button to set the length. You can choose any number of measures from 1 through 999. Because patterns generally loop repeatedly during playback, a typical length is from one to four measures.

    Shortening a pattern removes measures from the end of the pattern. Any note data in the measures that you remove is lost.

    Parts within a pattern can have different lengths than the pattern. For information, see Part Length.

  • Groove Range

    Range of groove levels for which the pattern can be used, in the range from 1 to 100. See Groove Ranges.

  • Destination Range

    Groove range of destination segments for which the pattern is valid. When used in Transitions, the pattern can be selected only if the destination range includes the beginning groove level of the destination segment. This setting has no effect when the pattern is not being used in a transition.

  • Embellishment

    Special role or roles of the pattern. Click one or more buttons to select them. If you select Custom, enter or select a value in the range from 100 to 199. See Embellishments.

  • Chord Rhythm

    Points within the pattern where chord changes can appropriately occur. In the display, each mark is a beat, and each space is a measure boundary. Long lines indicate beats where chord changes are appropriate. Click Set to open the Set Pattern Chord Rhythm Dialog Box. For more information, see Chord Rhythm.


Default New Pattern

When you create a style or insert a pattern in a style, a default pattern is placed in the Style Designer window. The default pattern has the Pattern Properties shown in the following table.

Property | Value
Name | Patternn
Length | One measure
Groove range | 1 to 100
Destination range | 1 to 100
Embellishment | None
Chord rhythm | First beat marked


Groove Ranges

The groove level of a segment, as set by the Groove Track, restricts which patterns can be selected from a style during playback. In the Pattern Properties window, you specify a range of groove levels at which the pattern can play.

One way to take advantage of groove ranges is to design patterns in a style with higher or lower levels of intensity. For example, a highly active pattern might contain lots of rhythmic activity, complex melodic patterns, and several instruments playing at once. This pattern would be suitable for a high groove level. An inactive pattern with a low groove range might contain several simple repetitions with little rhythmic variety and use only a few instruments.

Groove levels can be organized using 1 as the lowest intensity level and 100 as the highest. However, groove levels do not necessarily have anything to do with intensity; they can be used to group patterns according to any criteria you choose. You can even dedicate a pattern to a particular use by assigning it a unique groove range, consisting of a single number. When the groove level is set to that number, only that pattern can be selected.

The following example shows how groove ranges might be used to arrange patterns by intensity level, and how these ranges work in tandem with groove levels.

You might establish four basic levels of intensity, with the ranges shown in the following table.

Intensity | Groove Range
Low | 1-25
Medium | 26-50
Medium-high | 51-75
High | 76-100

In the groove track, set groove levels that fall within the desired range. Use the plus/minus range setting in the Groove Level Properties to create randomness. For example, set a groove level of 50 with a plus/minus range of 10. Approximately half the time a pattern will be selected from the medium range, and half the time one will be selected from the medium-high range.

Of course, you can always give a pattern a groove range that does not exactly match the ranges in the general scheme. For instance, a pattern in the example could be given a range of 40 to 60, putting it in the medium and medium-high ranges and giving it a high probability of being selected at the groove level described in the previous paragraph.

When you create a new, empty pattern in a style, it has a default groove range of 1 to 100. Because this is the full range of possible groove levels, the pattern responds to all groove levels set by a groove track.

If you do not include a groove track in a segment, or do not insert groove levels in the groove track, the segment uses a default groove level setting of 62. Any pattern with a groove level that includes 62 can potentially play in the segment. Thus a new segment with no groove changes is always able to use a new pattern that has the default groove range. Applications can set appropriate groove levels at any time.


Embellishments

Embellishments are patterns, usually brief, that serve special roles in a style. A pattern designated as an embellishment is selected for playback only when the performance specifically requests an embellishment of its type. This might occur as the result of a marker in the Groove Track. It can also happen during transitions; for more information, see Transition Options: Transition Pattern.

An embellishment must be at least one measure in length, and usually is no more than two measures.

The following embellishment categories can be assigned to patterns in the Pattern Properties window in Style Designer. A pattern can belong to more than one category.

  • Intro

    Short introductory phrase to begin the piece.

  • Fill

    Short fill leading from one phrase to another.

  • Break

    Short break where the rhythmic accompaniment halts so a small group of instruments, or a single instrument, can be heard.

  • End

    Short phrase to conclude the piece.

  • Custom

    One of up to 100 special categories that you can create. An embellishment of this type cannot belong to any other category.

Note The names of the embellishments, and the descriptions given here, represent typical usage but do not limit how you can choose to use the categories. Assigning a pattern to particular embellishment categories does not give it special properties or behavior other than tying it to playback commands.


Chord Rhythm

When you create a pattern, you specify the chord changes against which the pattern is most appropriately played. If any chords in the Chord Track would violate the chord rhythm of the pattern, the pattern is less likely to be selected for playback.

Specifying a chord rhythm does not dictate that chord changes must take place according to that rhythm while the pattern is playing. Rather, it stipulates that the pattern is best played in circumstances where chord changes do not fall outside the rhythm.

For example, you might set a chord rhythm for parts in a pattern containing linear statements that need to play though one whole measure without the chord changing beneath them. You mark only the first beat of each measure in the pattern as a valid point for a chord change. The pattern will not play in a section of a segment where the chords change more often than once per measure, unless no other suitable pattern is available.

On the other hand, many accompaniment parts consist of short statements that are not adversely affected when chord changes occur frequently. For example, a piano part that plays an arpeggio on each beat can sound fine if a different chord occurs on each beat. By marking all beats in this pattern as valid for chords, you ensure that the pattern can be selected regardless of the frequency of chords in the chord track.

To set a chord rhythm for a pattern, click the Set button in the Pattern Properties window. The Set Pattern Chord Rhythm Dialog Box appears.


Set Pattern Chord Rhythm Dialog Box

The following dialog box is used to set the Chord Rhythm for a pattern.

Set Pattern Chord Rhythm dialog box

The dialog box contains the following elements:

  • Rhythm

    Graphic representation of the pattern, showing all measures and beats. Click on a beat to mark it with an X or to clear the mark. Marked beats are places where chord changes can appropriately occur.

  • Measure, 1/2 Measure, and Beat

    Click one of these buttons to mark all matching beats in the pattern.

  • Clear

    Click this button to clear all marks in the pattern.


Motifs

A motif is a special kind of style pattern. It is often a brief melodic or rhythmic figure, or some other sound designed to be played over other music. Unlike normal patterns, or even Embellishments, motifs are never selected automatically as the style plays. They must be played explicitly, either by an application, by a script, or by the Segment Trigger Track.

Motifs are similar to regular patterns in three important ways:

  • A motif can contain multiple parts.
  • Each part can play multiple variations.
  • Notes are transposed according to the current chord.

However, there are differences:

  • Because motifs are played on request, they do not have Groove Ranges or Chord Rhythm to limit the context in which they can play.
  • Motifs have some properties normally associated with segments, including loop points and alignment options.
  • A motif can also have its own band.

Motifs are usually a full measure or less in length. You create a motif using Pattern Editor in the same way you create a regular pattern. In fact, motifs and patterns are interchangeable in the Style Designer Window and the project tree.

When creating a motif, pay heed to the use of the Playmode property in the Note Properties window. Use the Fixed play mode to cause a motif to play with a fixed pitch, regardless of the chord or key playing behind it.

Just as when building a style pattern, be sure to test the motif against different chords and chordmaps. A motif that sounds satisfactory with one chord may sound unsatisfactory with another. This is particularly true if you design the motif as a variable pitch motif. You can set the motif so that it does not play with any chord you consider incompatible. As with a variation, you can open the Variation Choices window and turn off the playback of the motif for specific chords.

One challenge in building an effective motif is that a motif is often set as an interactive element and may be triggered to start at any beat in the measure. Chord changes can be inserted at any point in the motif performance. Because of these factors, a simple rhythmic motif is usually the most effective.

A motif can be copied and pasted within a style, or from one style to another. When sharing motifs between styles, be aware of the following:

  • The time signature of the motif should be compatible with that of the style it is copied into. For example, 2/4 is compatible with 4/4.
  • The motif's instrument assignments may change if the new style's band has assigned different instruments to the PChannels used by the motif's parts; or the motif's parts may play silently because their PChannels have never been assigned instruments by the band.

Motifs can be used for sound effects as well as music. Using DLS instruments based on non-musical sounds, you can design a sound-effects motif with variations that performs in much the same way as a secondary segment containing a Wave Track. The motif might contain a single note that triggers either a one-shot or a looped wave, or it might contain several notes, each representing a different sound.

The following topics provide more information about creating and using motifs:

  • Managing Patterns and Motifs in Style Designer
  • Creating Patterns and Motifs in the Project Tree
  • Motif Properties
  • Motif Bands
  • Playing Motifs


Motif Properties

The following figure shows the Properties Window for a motif in the Style Designer window.

Motif Properties window

The window has the following tabs:

  • Motif Tab

    This tab includes the following settings:

    Setting | Description
    Motif Name | Name of the motif. This name can be used by applications to retrieve the motif from the style.
    Length | Length, in measures. Click to set the length to a value from 1 to 999.
    Reset Variation Order on Play | If selected, variations play from the start of the cycle (as specified in the Play setting in the Part Properties) each time the motif is played. If not selected, the cycle picks up where it left off. There is no effect on playback of variations in random order.
    Start Time | Point within the motif at which it starts playing. Normally the first measure, beat, grid, and tick.

  • Loop Tab

    This tab is similar to the Loop Tab in the Segment Properties window.

  • Boundary Tab

    For an explanation of the settings in this tab, see Boundaries and Segment Alignment.


Motif Bands

A motif can have its own band. The motif's band settings take effect whenever the motif is played.

You can create a new band by right-clicking on the motif icon in the project tree and clicking New Band on the shortcut menu. For information on moving or copying an existing band, see Managing Components.

Be careful not to make changes on PChannels that are used by other parts of the performance. For more information, see Conflicts Between Bands.


Playing Motifs

A motif is created in a style. Unlike a style pattern, however, a motif can be isolated and played independently of the style that contains it.

While working in DirectMusic Producer, you can select a motif as a component in the Secondary Segment Toolbar and play it as a secondary segment. A motif can also be used by an application as if it were a segment file. An application retrieves a motif from a style by its name, as set in the Motif Properties window.

If a motif does not have its own band, it plays using whatever PChannel settings were last applied by another band.


Pattern Editor

The Pattern Editor component is used to create Patterns, which are used in Styles and in the Pattern Track. It is also used to create Motifs, which are special patterns played as segments.

To open the Pattern Editor for a style pattern or motif, double-click the pattern or motif in the Style Designer Window, or click it and press ENTER. Patterns in pattern tracks are edited in the Segment Designer Window.

The following figure shows the elements of the Pattern Editor window for a style pattern. The editing window for a pattern track in Segment Designer is similar, but does not contain a Chords for Comp track, and uses the timeline of the segment.

Pattern Editor window

The Pattern Editor window contains the following elements:

  • Timeline

    The time signature comes from the style properties. See Setting a Style's Time Signature and Grid.

  • Chords for Composition track

    See Chords for Composition

  • Part list

    Displays an entry for each part, showing the information in the following table from left to right.

    Element | Description
    PChannel number | Performance channel used to play the part. Each part has a unique PChannel. However, multiple instances of each part can be displayed, for convenience while editing.
    PChannel name (in parentheses) | Name used for the PChannel throughout the project.
    Part name | Internal name of the part.

    These properties can be edited in the Part Properties window.

  • Part editing windows

    When minimized, these display only the notes for each part. When maximized, they contain Note Editing Windows and strips for Variation Switch Points and Continuous Controllers.

    For general information on editing the notes in parts, see Note Entry and Editing.


Part Properties

Each part in the pattern has a Properties Window, as shown in the following figure.

The window contains the following settings:

  • Name

    Internal name for the part. Part names are useful when you create multiple parts on the same PChannel. For example, you might have a part for lead trumpet and another part for the rest of the trumpet section. If these two parts use the same instrument, you can place them on the same PChannel. You can give the PChannel a name that describes its use, such as high brass, but you can also assign separate part names, such as lead or section, to the two parts in the pattern. Another use is in percussion parts, which might share PChannel 10. You can use the part name to indicate which part belongs to each percussion sound.

  • PChannel

    Performance channel on which the part plays. Select a number in the range from 1 to 999. Some PChannels are reserved for percussion; see PChannel Number.

  • PChannel Name

    Name of the PChannel, used throughout the project.

  • Inversion Boundaries

    Boundaries for how high or low a part can transpose when it plays over different chords. Notes beyond the boundaries are shifted one octave so they fall within the limits. The boundaries you choose affect only the part you are editing, and are not transferred to any other components, even if they use the same PChannels. For more information, see Inversion Boundaries.

  • Lock ID

    Group identifier for parts whose variation numbers must always match. Parts with the same ID play in tandem, so each time a different variation plays in one part, all other parts in the locked group play their own variations of the same number. For more information, see Variation Locking.

  • Play

    Manner in which variations are selected each time the segment loops. The choices shown in the following table are available on the drop-down list.

    Selection | Effect
    in random order | Variations are played randomly.
    in order from first | Variations are played in order, starting with the first.
    in order from random | Variations are played in order, starting from a random position.
    with no repeats | Variations are played randomly, but none is repeated until all have played.
    by shuffling | All variations are played, then shuffled and played again.

    This setting applies not only to audition and recording in Pattern Editor, but also to run-time files that use the style.

  • Time Sig

    Click to open the Set Time Signature and Grid Dialog Box.

    The time signature and grid settings for a part override those for the style or segment in the display of that part.

    When you use a different time signature in a part than in the style or segment, the final measure in the part might be left incomplete. For more information, see Part Length.

  • Length

    Click to set the length of the part and add pickup and extension bars, shown as Pickup and Ext in the Properties window. See Part Length and Extra Measures.

  • Note Color

    Click these buttons to select colors for selected and unselected notes in this part only.

  • Default Play Mode

    Default Play Mode and Chord Level for notes in the part.


Inversion Boundaries

When a pattern encounters a chord in a segment, the notes in the pattern are transposed to fit the chord. If the pattern encounters a chord that has a very high or low root, the notes in the part may transpose to exceed the typical range of the instrument playing the part. For example, if you create a flute part that is high in the flute range, a segment chord on a very high root can cause the flute part to transpose above the typical range for a flute, causing the instrument to sound shrill.

Use the Inversion Boundaries settings in the Part Properties window to establish high and low range limits for a part. Notes that exceed the boundaries when conforming to a segment chord are shifted one octave up or down as needed, so that they remain within the limits you set.

The default setting is equal to the full, ten-octave range of a MIDI keyboard, so an instrument part can transpose with any chord encountered by the pattern and not have notes that exceed the boundaries. In most situations, the chords in a segment are no more than one octave above or below the chord for composition you use when originally creating a pattern, and thus do not result in excessive transpositions. However, if you notice that a part sounds as though its notes are being transposed too far out of the typical range when playing with a chord, you can adjust the inversion boundaries.

Select Set automatically based on existing notes to set the low boundary one whole step below the lowest note in the part, and the high boundary one whole step above the highest note in the part. The values in the Low and High boxes are set accordingly. Deselect the check box to make adjustments to the settings.

The inversion boundaries for a part may be overridden by the chord inversion settings of a chord. For more information, see Chord Inversion Tab. The boundaries can also be overridden for individual notes; see Note(s) Tab


Variation Locking

Pattern parts can be forced to use the same variation numbers by being assigned a common lock identifier. Each time a different variation plays in one part, all other parts in the locked group play their own variations of the same number.

In the Variations area of the Part Properties window, click the Lock ID list and choose 1-create to create a new group, or choose any group in the list that has already been created. After you assign two or more parts to a group, all their variations play in tandem.

Suppose, for example, that you want a drum part to match its 32 variations to the 32 variations in a bass part. Assign both parts to the same variations lock group. This ensures that special rhythmic ideas always occur together.

Conversely, you can use variation locking to provide a more predictable counterpoint to your music. If two or more parts have variations that complement each other with contrapuntal movement, you can lock them together so their variations play in tandem and provide the counterpoint you intend, without mixing variations in unwanted combinations.

You can use the variations lock to create up to 255 groupings from variations in any parts in a pattern.

When you edit a part that is assigned to a variations lock group, you can hear the effect of variations locking. When you activate one variation in a part during playback, the variations with the same number play in all other parts that belong to the same variations lock group.


Part Length

You can set a length for a part that is greater or smaller than the length of the pattern containing it.

If a part is shorter than the pattern, the part repeats until the end of the pattern. For example, a one-measure part will repeat four times in a pattern that is four measures long.

If a part is longer than the pattern, only the portion of the part that fits in the pattern is displayed. Other notes remain, but will never play. For example, in a four-measure pattern, notes in the fifth and sixth measures of a six-measure part will not be heard.

When a part is linked to another part in a different pattern, the length of the part can be used differently in the other pattern. For example, if a part in a four-measure pattern is four measures long, and is linked to another part in a two-measure pattern, then the part is shortened to two measures in that pattern only. No notes or data are deleted from the part, but the extra two measures are not used. If the part is linked to a part in an eight-measure pattern, then the part plays twice in the longer pattern.

Mixing time signatures in parts and styles or segments can affect the number of measures in a part. If the part is in a style or segment that has a different time signature, the part can be cut off before its final measure is completed. For example, a two-measure part in 3/4 time can play for four measures in a three-measure pattern that uses the style's 4/4 time signature.

See Also

  • Extra Measures
  • Linking Parts


Play Mode

When you base a segment on a style, you usually provide a chord progression in a Chord Track. As the segment plays, the notes in the patterns conform to the chords. The function of a note in a part is calculated as a chord tone (1, 3, 5, or 7), or as an intervening scale tone (2, 4, or 6).

The way notes adjust to chords in a segment is called the play mode. For each part in a pattern, you set a default play mode in the Part Properties window. This default mode can be overridden for individual notes on the Note(s) Tab of the Note Properties window.

The play modes are as follows:

  • Chord/Scale

    As a part plays, it conforms to the tones of the chord or, if a chord tone is not available, it uses a pitch from the underlying scale of the chord. Every note in the part plays using a pitch from the chord or its scale, so no notes in the part are omitted during playback. This behavior is important when a part plays over a variety of chords that sometimes include an added 7th tone.

    For example, if a part contains notes on steps 1, 3, 5, and 7 and it encounters a chord that contains a 7th, then all four chord tones are used to play the part. However, if the chord does not contain a 7th, the part plays using the root, 3rd, and 5th of the chords, and uses the 7th note of the chord's underlying scale to complete the part. This may add a 7th to the sound of a chord as it plays the part, even if the chord is only a triad. If the part also contains notes on steps 2, 4, or 6, the corresponding pitches from the chord's underlying scale are used to complete the part.

  • Chord

    As a part plays, it conforms to as many chord tones as possible. Scale tones are used for steps 2, 4, and 6. However, if the chord does not contain a 7th, then part tones on step 7 are ignored and left out during playback. This option avoids unnecessarily adding a 7th to the sound of the chord when the chord does not contain a 7th. If a part note falls on step 7 of a chord, it plays only if the chord includes a 7th.

  • Scale

    The part adjusts to the root of the chord being used and uses the scale of the chord exclusively, ignoring the chord tones.

  • Pedal Point

    The key root is used and the notes only track the intervals in the scale. The chord root and intervals are completely ignored. This is useful for melodic lines that play relative to the key root. For more information, see Pedal Point Play Mode.

  • Pedal Point Chord

    The key root is used and the notes only track the intervals in the chord. The chord root and scale intervals are completely ignored. This is useful for chordal lines that play relative to the key root.

  • Pedal Point Always

    This mode works like Pedal Point Chord if possible, but falls back to Pedal Point if necessary.

  • Fixed

    The note always plays at the same pitch in all situations, regardless of the current chord or the key signature. Fixed parts are typically used for percussion and sound effect parts.

  • Fixed to Key

    Available for notes but not patterns. Notes always play at the same pitch, adjusting if a key other than C is chosen.

  • Fixed to Chord Root

    Available for notes but not patterns. The note is always at the same interval relative to the chord root.


Pedal Point Play Mode

Pedal point is a term that originated in organ literature. It is a nonharmonic tone that is sustained in the pedal (bass), while the harmonies change above it. The definition has expanded to include any note that remains constant, regardless of range, and thus ignores the harmonic changes.

A part that is set for pedal point play mode ignores the root and other chord tones of the chord in a segment. The pitches used in the part—which are measured numerically as 1, 2, 3, 4, and so on, of the chord for composition—are applied to the scale of the chord, as shown in the Chord Properties window. They are not adjusted to follow the root of the chord, as they normally would be.

Note The chord scales of all chords use only pitches between C1 and B1. For example, the scale of an F major chord begins with the pitch C1. Thus, the scale tones used by a part set for pedal point play mode always fall between C1 and B1.

For many chords there is no change at all in the pitches used to play the part. If all the original pitches in a part are included in the scale of a chord, the part plays as though there is no change in chord. If a pitch in the part is not included in the scale of a chord, the part notes adjust as necessary by a half or whole step to fit the pitches in the chord scale.

For example, a part using the default 2Cma7 chord for composition, and containing the notes C, E, G, and B, normally plays the 1, 3, 5, and 7 of a chord in a segment, based on the root and chord tones shown in the Chord Properties window. However, if the part is set for pedal point play mode, it plays the 1st, 3rd, 5th and 7th steps of the scale for a chord encountered, ignoring the actual root and chord tones of the chord.

If the 1st, 3rd, 5th and 7th steps of the chord scale are C, E, G, and B, the part plays using these notes, creating the effect of no chord change at all. Because many chords can include these four pitches in their chord scales, the part can encounter many chords with no change to how the part plays, thus creating the sound of a pedal point. For example, the chords C major, D minor, G major, or A minor all likely include C, E, G, and B in their chord scales, and the part would play exactly the same for all these chords.

If the chord scale of a chord contains pitches other than C, E, G, or B, then the part uses whatever pitch falls on the same step in the scale, thereby minimizing the changes to how the pattern sounds. For example, if the part encounters a 2C#mi7 chord with a C# natural-minor chord scale, the 1st, 3rd, 5th and 7th scale steps of the scale would be C#, E, G#, and B. If the part encounters a 2Gmi7 chord with a G natural-minor chord scale, the 1st, 3rd, 5th and 7th scale steps of the scale would be C, Eb, G, and Bb.

The following table shows the results of a part set to pedal point play mode as it encounters chords with different chord scales. The part was created using a 2Cma7 chord for composition, and contains the notes C, E, G, B (equal to 1, 3, 5, and 7 of the chord for composition).

Chord Encountered | Chord Scale Tones | Resulting Tones
2CMa7 (or 1Cma7) | C, D, E, F, G, A, B | C E G B
2Gmi7 (or 1Gmi7) | C, D, Eb, F, G, A, Bb | C Eb G Bb
2Fmi7 (or 1Fmi7) | C, D, Eb, F, G, Ab, Bb | C Eb G Bb
2C#mi7 (or 1C#mi7) | C#, D#, E, F#, G#, A, B | C# E G# B
2D#7 (or 1D#7) | C#, D#, E#, F#, G#, A#, B | C# E G# B

Note Because a pedal part ignores the chord root, the behavior of the part as it encounters a chord is the same whether the chord root is in the lower range, such as 1C, or the upper range, such as 2C.

Pedal Point Play Mode and Segment Key Signatures

When you set a part to pedal point play mode, its behavior is not affected by the key signature in the chord track of the segment in which the part is playing.

Pedal Point Play Mode and Pattern Key Signatures

The key signature of a pattern interacts with the chord for composition to affect the behavior of the parts in a pattern when you play the style by itself—that is, without the use of a segment containing the style. This effect only takes place with parts that are set to pedal point play mode.

If a pedal point part contains variations that are set in the Variation Choices Window to play only with specific chord roots, the chord for composition for a pattern serves as the chord that is checked to determine compatibility with the variation. If a part is active and open, then all its variations play randomly during playback of the pattern. However, all other parts play only variations that are compatible with the chord for composition.

If you change the key signature for the pattern, the root function of the chord for composition may change relative to the key. For example, a 2Dma7 chord for composition serves as a II chord in the key of C, but as a III chord in the key of Bb. Thus, a variation set to work only with a II chord no longer plays if you change the key from C to Bb.

This behavior enables you to test the playback of a part and its variations without other parts in the pattern randomly playing variations that are not normally used with the variation you are creating. Only the variations that are compatible with the current chord for composition are heard. This lets you change the chord for composition as needed during the creation process, so that you can hear appropriate variations from other parts that fit with the chord for composition. So long as the Function option is selected, all parts in the pattern adjust as you change the chord for composition. They remain constant with the final chord that you choose for the entire pattern. You can leave the pattern set to a fixed key, and conveniently create new variations in the active part while hearing only the variations in other parts that are appropriate for that chord for composition. For example, if you are in the key of C but want to create a variation that responds only to a IImi chord, change the chord for composition to Dmi. With the Function option selected, all parts in the pattern shift up one step.

Now create the new variation, and during playback only those variations in the non-open parts that are set to work with a II chord will play. If you set some variations to avoid playing with any II chord except a IImi chord, then those variations will play, while others will not.

After you create the new variation, you can change the chord for composition to another chord, and all parts, including the one just created, adjust to the new chord.


Chord Level

The properties of all chords in DirectMusic Producer include four levels of chord structure that you can use to combine multiple layers of chord tones, thus creating chords with as much complexity as you need. The properties of each level include a chord scale and settings for acceptable inversions of the chord.

You can set instrument parts in a pattern to use different chord levels, so that as a part encounters a chord, it uses the chord, scale, and inversion settings of the level to which it is assigned.

As a pattern encounters various chords, the parts in the pattern respond to the chord and scale at their assigned levels. If the chord is simple, where all four levels of the chord contain the same chord structure and scale, then the resulting notes are transposed in all parts of the pattern in a regular manner. If the pattern encounters a complex chord, where each level has a different chord and scale, the various parts in the pattern play a complex mixture of chords and scale notes that combine in interesting layers of tonality.

For information about creating chord levels and the effect that chord structure has on the playback of a pattern, see the following topics:

  • Chord Properties
  • How a Pattern Interacts with a Chord
  • Simple and Complex Chord Structures


Note Properties

The Properties Window for selected notes in a pattern has two tabs:

  • Note(s) Tab

    Miscellaneous settings, including settings that control the interaction of notes with chords.

  • Variations/Flags Tab

    Assignments of notes to any of the 32 variations in the part. Use this tab to copy notes to other variations, or to remove notes from variations.


Note(s) Tab

The Note(s) tab of the Note Properties window is shown in the following figure.

Note Properties Note(s) tab

If multiple selected notes have different properties, these properties are displayed as dashed lines. Any changes made in these or other properties apply to all selected notes.

This tab contains the following settings:

  • MIDI Note

    Defines the pitch as a note name and octave. Use the up-down arrows to change the note name. Enter an octave value in the range from 0 to 10, or use the up-down arrows to select a value. MIDI note values range from C# 0 to G10, which are equivalent to MIDI numbers 1 through 127. Though you can enter the MIDI note C0, it has a MIDI number of 0, and DirectMusic Producer does not play this pitch. Also, if a pattern encounters a low chord in a segment, low notes may be transposed below C#0 and will not play.

  • Scale Function

    The three values below the note and octave boxes define the basic functionality of a note. As you enter notes in a pattern, their scale function is calculated according to the chord for composition. Scale function indicates how the note is performed against a chord or scale. For example, a 5# against a D Major chord is performed as an A#, and a 3b against a D minor chord is performed as an E. Use the Dia box to set the note's function in the diatonic scale; the Chr box to set its function in the chromatic scale; or the unlabeled box to change its position in the scale.

  • Velocity

    Represents the speed at which the signal from a pressed MIDI piano key is sent, and is usually translated as volume. Enter a value in the range from 1 to 127.

    The text box labeled with a plus/minus sign specifies a range within which the velocity can vary randomly. Values can range from 0 to 127. If you specify a value of 10 for a note that has a base velocity of 100, the velocity of the note when played varies between 95 and 105. Randomness can make the performance sound more realistic.

  • Playmode

    Specifies how the selected notes are transposed according to the underlying chord. For information about the options in the Playmode list, see Play Mode. The Default setting specifies that the play mode for the notes is the same as the default play mode for the part, set in the Part Properties window.

  • Start Time, End Time, and Duration

    Defines the note start time, end time, and duration, expressed as bar (measure), beat, grid, and tick values. They can be used for one or more selected notes.

    The two text boxes under Random specify a range within which the start time and duration can vary randomly. This value can be in the range from 0 through 1650. A value of 100 results in a randomization of up to 50 ticks in either direction, and a value of 1650 results in a randomization of up to 825 ticks in either direction..

  • Map to Chord

    Determines the bar and beat location of the chord that notes map to. This is particularly effective when a note occurs in anticipation of a chord change. For example, a note starting on the second half of beat 2 and sustaining into beat 3 should usually be mapped to beat 3. The default setting is the beat of the start time for the note.

    Note The mapped beat should not be more than a second after the note start time, because DirectMusic normally prepares notes only a second before they play. However, applications can extend the prepare time in the playback of your file, making it possible to extend the distance between note start and mapped beat. For more information, see DirectX Audio Help in the DirectX SDK documentation.

  • Override Inversion Group

    Contains settings for creating and defining groups of notes that override the Inversion Boundaries set in the Part Properties window. It can be used for one or more selected notes. All notes belonging to the same group are shifted together if the first note played in the group lands outside the inversion boundaries. For example, if you create a pattern with a chromatic run from C4 to C5, you can set the upper inversion to C5. Over a 2 C chord, the scale plays as expected all the way to C5. Over a 2 B chord, the scale plays as B4 to B5, nearly an octave higher. If the chromatic run is from C4 to G4 in the pattern, with an upper inversion boundary of G4, then the scale plays as B3 to F#4 when played over a B2 chord.


Variations/Flags Tab

The Variations/Flags tab of the Note Properties window is shown in the following illustration.

Note Properties Variations/Flags tab

If multiple selected notes have different properties, the check boxes are displayed in gray. Any changes made in these or other properties apply to all selected notes.

By selecting one of the numbered check boxes, you assign the selected notes to any of the 32 variations in the part. This action effectively copies a note from one variation to another.

The Variations/Flags tab contains four settings for controlling the behavior of the selected notes when the chord changes or playback is interrupted:

  • Don't cut off

    The note continues to play its full length when playback is interrupted or a transition occurs.

  • Cut off if not in scale

    If the note is not in the new scale, it is cut off during a transition.

  • Regenerate on chord change

    The note is restarted during a transition, adjusting to a new chord if necessary.

  • Cut off if not in chord

    If the note is not in the new chord, it is cut off during a transition.


Chords for Composition

A pattern's chords for composition serve as the basis for the notes in the parts.

The notes in a pattern are not calculated as specific pitches, such as C, D, or E, but according to their function in the chord, such as step 1, 2, or 3 of the chord's underlying scale. The function of a note in the pattern is measured relative to the chord and the underlying scale of the chord. For example, the note E is the third of the 2 C chord, and therefore functions as the third step of any chord it encounters. The note D is the second step of the 2 C chord's underlying scale. The note A# is the raised sixth step of the scale.

Chords for composition are a convenient setting you can use to compose a pattern in a desired key. After you finish creating a pattern and its variations, the chords for composition are no longer used. The notes of the pattern are interpreted as steps 1, 2, 3, and so on for whatever chords the pattern encounters in other DirectMusic Producer components, such as a segment. Regardless of the chords for composition you use to create the pattern, the notes of the pattern are used by other components as if they are written in the key of C. This is true even if you use a chord for composition that is something other than a major chord, such as a minor or augmented chord.

For example, if you use a chord for composition of G minor, with a natural minor underlying scale, the notes G, A, Bb, D, and F are considered steps 1, 2, 3, 5, and 7 of the scale. For whatever chord the pattern encounters in a segment, the pattern plays using steps 1, 2, 3, 5, and 7 of that chord's underlying scale. If the pattern plays over a D major chord, then the pattern plays D, E, F#, A, and C#, which are steps 1, 2, 3, 5, and 7 of the D major chord's underlying D major scale.

It is possible to have multiple patterns based on different keys within a style. For most purposes, it is recommended that you create styles with all patterns based on the key of C major or C minor. This makes it easy to view the notes of a style in terms of their scale positions relative to the note C.

Chords for composition appear in the track labeled "Chords for Comp" in the Pattern Editor. The default chord for composition, occurring on the first beat of the first measure, is 2CM7 (middle range C major 7th). You can edit this chord and add up to one chord per beat. To insert a chord, right-click the Chords for Composition track and click Insert on the shortcut menu, or click the track and press the INSERT key. Edit the chord properties in the Chord Properties window.

If you change the properties of a chord for composition after you enter notes in a pattern, the notes are affected. For more information, see Keep Constant Option.

By default, all variations in a pattern can play on any chord. However, if you do not want a variation played with certain types of chords, you can disable the variation in relation to those chords. To do this, use the Variation Choices window to enable and disable certain chord types for each variation you create in a pattern.


Choosing Chords for Composition

You can use any chords for composition that you like, including complex chords and chords where the chord tones are not contained in the scale.

Each level in the chord for composition must use notes that are contained within a major 7th interval—that is, less than one octave. If a level of the chord for composition extends beyond an octave, notes in the lower part of the chord may be ignored, and the pattern notes are incorrectly identified according to their function in the chord scale. If the bottom notes of a chord for composition are ignored, the scale function assigned to the pattern notes is offset by an interval of a third or more. This causes the pattern to play incorrectly with any chord.

To ensure that a pattern plays over many types of chords with predictable results, use the following guidelines for choosing a chord for composition:

  • Use a 4-note chord with a range less than the space of an octave.
  • Use a 7-note chord scale.
  • Include all chord notes in the chord scale.
  • Use the same 4-note chord and 7-note chord scale on all four levels of the chord. For information about chord levels, see Simple and Complex Chord Structures.

If you want to use a pattern with a specific set of chords in a segment, you can design the pattern using those exact chords in the Chords for Composition track. Thus, you can design each measure in the pattern using a specific chord for composition, and then use that exact chord for corresponding measure in a segment. This provides complete predictability for what notes will play in a segment.

See Also

  • Chord Properties


Keep Constant Option

When you change the chord for composition, notes in the pattern remain fixed either to their role in the scale or to their MIDI note values. The behavior of notes in the pattern is indicated by the symbol (M) or (F) at the left edge of the Chords for Comp track. To change the behavior, right-click the track and select Keep Constant on the shortcut menu.

The behavior of the options is as follows:

  • MIDI Note (M)

    Pattern notes remain at the same pitch if you change the chord for composition.

  • Functionality (F)

    Pattern notes are transposed with the chord for composition and its underlying scale. For example, if you change the chord from C major to C minor, all notes on the third of the chord change to Eb. If you change the chord from C major to F major, all notes in the pattern move up a perfect fourth. However, in this example, if the F chord uses a different underlying scale than the C chord, all pattern notes move to similar notes in the new scale.


Chords for Composition Track Properties

The Properties Window for the Chords for Composition track in a pattern is shown in the following figure.

Chords for Composition Track Properties

The window contains the following elements:

  • Key Root

    Name of the key root. Enter or select a note.

  • Key Signature

    Number of sharps or flats in the key signature. Enter or select a value in the range from 0 through 7.

  • #'s and b's

    Click #'s to select sharps or b's to select flats.

This window enables you to set a key signature for the pattern. By combining the name of a key, such as D or F, and an appropriate number of flats or sharps for the key, you can choose any major or minor key signature. For example, you can enter the key root G, select the flats option, and enter a key signature of two flats to create the key of G minor. You can also use a combination of settings to create a custom key signature. For example, an F key root with zero flats creates a key based on the F Lydian scale.

The key signature is shown on the track immediately after the "Chords for Comp" label. You may have to resize the column to see it. For an illustration, see Pattern Editor.

If you view a pattern part using hybrid notation, the key signature is shown in the grand staff of the pitch guide just as in standard music notation. Accidentals are also added in the editing region in front of notes that are affected by the key signature.

The key signature in a pattern affects only the notational display of the parts in the pattern. It does not alter the playback of the parts, with the exception of parts set to use pedal point play mode. For more information, see Pedal Point Play Mode.


Adding a New Part to a Pattern

A pattern can have as many as 999 parts. Each part can play on a unique PChannel, or multiple parts may share a PChannel. For example, you could create a flute melody part, a flute harmony part, and a flute solo part, all on PChannel 1. These are separate parts, though they use the same instrument sound.

When you create a new part, it can be either completely independent of other parts, or linked to an existing part. When two parts are linked, any editing changes you make in one part are propagated to the other. For more information, see Linking Parts.


To insert a new, independent part in a pattern

  1. Right-click the Pattern Editor window.
  2. On the shortcut menu, click Add Pattern Part(s). The Add New Part Display Dialog Box appears.
  3. In the PChannel box, type or select the number of the PChannel to add a part to. By default, DirectMusic Producer chooses a PChannel number that is unused in the pattern.
  4. Click Create New Part. A new part is added
  5. Insert another part, or close the Add New Part Display dialog box.


To insert a new, linked part in a pattern

  1. Right-click the Pattern Editor window.
  2. On the shortcut menu, click Add Pattern Part(s). The Add New Part Display Dialog Box appears.
  3. In the PChannel box, type or select the number of the PChannel to add a part to. By default, DirectMusic Producer chooses a PChannel number that is unused in the pattern.
  4. Click Link to Existing Part. The dialog box in the following figure is displayed, listing all existing pattern parts in the style.

    Link to Existing Part dialog box

  5. Select an existing part to link the new part to.
  6. Click OK.
  7. Insert another part, or close the Add New Part Display dialog box.


Add New Part Display Dialog Box

The Add New Part Display dialog box, shown in the following figure, is used to create new parts and new displays of existing parts.

Add New Part Display dialog box

The dialog box contains the following elements:

  • PChannel

    PChannel for the new part or new part display. The name of the PChannel is displayed but cannot be edited here.

  • Display Existing PartRef

    Click to create a new display of a part. If more than one part is using the PChannel, the caption on this button is Choose Existing PartRef, and clicking on it displays the Set PartRef to Display dialog box. See Creating Additional Part Displays.

  • Create New Part

    Click to create a new part using the selected PChannel.

  • Link to Existing Part

    Click to create a new part using the selected PChannel. The Link to Existing Part dialog box is displayed. Select a part to link to. See Linking Parts.


Creating Additional Part Displays

For editing convenience, you can make one or more duplicates of an existing part in a pattern. A duplicate is not a new part but simply an additional display of the original part. Duplicates always contain the same note information, the same variations, and the same properties as the original part display. Changes made to one part display are automatically included in all other displays for that part, although they may not be visible immediately if different variations are active in each display.

Creating an additional part display is not the same as creating a separate part on the same PChannel. For example, you could create a flute melody and a flute harmony part on PChannel 1 and consider them separate parts, even though they use the same instrument sound.


To create a duplicate display of a part

  1. Right-click the Pattern Editor window.
  2. On the shortcut menu, click Add Pattern Part(s). The Add New Part Display Dialog Box appears.
  3. In the PChannel box, type or select the number of the PChannel to add a part display to. By default, an unused PChannel number is displayed; change it to the PChannel used by the part you want to duplicate.
  4. If the PChannel is in use by a single part in the pattern, the Display Existing PartRef button is active and the legend PChannel has one Part Reference is displayed. Click Display Existing PartRef to insert a new part display for the part that exists.

    If the PChannel is in use by multiple parts in the pattern, the Display Existing PartRef button changes to Choose Existing PartRef and the legend PChannel has multiple Part References is displayed. Click Choose Existing PartRef and select a part from the list in the Select PartRef to Display dialog box, shown in the following figure.

    Select PartRef to Display dialog box


Linking Parts

Linked parts share all notes, variation switch points, and continuous controllers as long as they are linked. Changes made in one part are propagated to all parts linked to it.

Linking is useful to reduce the overall size of a pattern, because multiple parts can share data. It also eliminates the need to duplicate material in the new pattern.

You can also link parts temporarily, as a way of copying material from one to the other before making changes that differentiate the parts. After you unlink the parts, changes made in one do not affect the other.

Creating linked parts is not the same as creating multiple displays of a single part. No matter how many displays of a single part you create, the part always plays a single instance of the pattern on the same PChannel. Linked parts always play independently. They can use different PChannels and can thus play on different instruments; they can even be in different patterns and play at different times.

All 32 variations in a part are shared and thus identical. However, the variations play independently. For example, if A and B are two linked parts in a single pattern and both play their variations in random order, they do not necessarily select the same variation number during playback. For information on how to force the parts to play the same variations, see Variation Locking.

The following Part Properties are shared by linked parts:

  • Inversion boundaries
  • Length (but not pickup or extension bars)
  • Default play mode (but not chord level)

Other part properties can be edited independently in each part.

The only time a part can be linked to an existing part is when you create it as a new part. For information, see To insert a new, linked part in a pattern.

To unlink two parts, right-click on one of them and click Unlink Part Reference on the shortcut menu. After a part is unlinked, it cannot be linked again to existing parts.

When parts are linked together, the letter L is displayed in front of their PChannel number in the Part list.

See Also

  • Creating Patterns and Motifs in the Project Tree


Part Variations

To increase musical interest, you can create as many as 32 variations for each instrument part within a pattern. As a pattern plays, DirectMusic Producer combines variations from each part in changing combinations. When a part has multiple variations, the variations are selected either in order or with some degree of randomness, depending on the Play setting in the Part Properties.

A well-composed style results in each pattern part selecting any of several variations, and playing it in combination with other variations in other parts. Each time playback of the style loops or repeats, a new combination of variations is selected. This creates a blend of all the parts in changing combinations of variations that rarely repeat.

Note Variations can also be created in a Wave Track. See Wave Variations.

Before you can enter any notes into a pattern, you must click at least one variation button to make the variation active. See Variation Buttons.


Variation Buttons

The variation buttons appear in Note Editing Windows for patterns and in the Wave Track. They consist ofa double row of 32 numbered buttons, with a larger button on each end, as shown in the following figure.

Click the selection bar to activate or deactivate all enabled variations.

The Variation Choices button is displayed only for pattern parts, not wave tracks.

The smaller buttons are used to specify and display the state of each variation, as shown in the following table.

Variation state | Button appearance | Effect | How to set
Inactive | Up | Notes are hidden and are not heard in audition. | Click active button.
Active | Down | Notes are shown and are heard in audition; notes can be edited. | Click inactive button; double-click to make all others inactive, or to restore previous state.
Disabled | Dark background | Variation is not used in playback, but can be auditioned if active. | Right-click and select Disable on shortcut menu. This disables all active variations.
Enabled | Light background | Variation is used in playback, but not heard in audition unless active. | Right-click and select Enable on shortcut menu. This enables all active variations.
Empty | White number | Variation contains no notes, but can play as a silent variation if enabled. | Delete all notes.
Not empty | Black number | Variation contains notes. | Add notes.

It is important to understand the difference between the active and enabled states.

  • Active (button down)

    Notes are displayed and can be edited. Active variations are heard when the pattern is auditioned in Pattern Editor. This state has no significance outside Pattern Editor.

  • Enabled (light background)

    The variation can play when the style or pattern track is played, either within DirectMusic Producer or in another application. If a pattern has eight variations with notes, but only five of those are enabled, one of the five enabled variations is played each time the pattern plays. This state has no significance for note editing or for auditioning within Pattern Editor.

    Because every part must have at least one variation, it is impossible to disable all buttons.

Note You can disable a variation in the Variation Choices window by not identifying any chord types that can play the variation. If no chord types are enabled for a variation, the variation button turns dark.

The following figure shows four possible settings for variations, none of which are active.

Inactive variation states

  • Variations 1 and 2 have notes in them and are enabled for playback in a component.
  • Variations 3 and 4 have notes in them, but they are disabled.
  • Variations 5 through 16 have no notes, but they are enabled. They will play silently.
  • Variations 17 through 32 do not have notes and are disabled.

When you create a new pattern or add a new instrument part to a pattern, all the variations are active and enabled by default, as shown in the following figure.

Variation buttons in default state

This default setting simplifies the process of inserting notes as you begin creating a part, by ensuring that the notes are initially placed in all 32 variations. You can double-click any individual variation button to isolate the variation and make all other variations inactive. Click the selection bar at the left of the variation buttons to make all variations active. Click it again to make all variations inactive.

You can activate variations in any combination. All the notes from all active variations are displayed. When you edit an existing note, changes apply only to the active variations to which that note belongs. If you add a note, it is added to all active variations. For more information, see Working with Multiple Variations.


Working with Multiple Variations

Often you will want to work with more than one variation at once. For example, you might start by inserting common material into all the variations you intend to enable. You might also want to create several identical copies of a variation so that it will have a greater chance of being selected for playback. This topic describes how to activate and enable multiple variations quickly, and discusses some implications of working with notes that may belong to different active variations.

The following methods simplify the activation and enabling of multiple variations:

  • Double-click a variation button to make it active and make all other variations inactive.
  • Double-click the same variation button to reactivate buttons made inactive by the previous double-click.
  • Click the selection bar at the left edge of the Variations strip to select buttons for all enabled variations in the part.
  • To enable multiple variations, activate them and then right-click on any button to display the shortcut menu.

When you make multiple variations active, all notes in the open variations are displayed, even if notes in different variations overlap or duplicate one another. Notes you enter are added to all active variations. If you select and edit a note's pitch, length, start time, end time, duration, or other properties, only the variations containing that note are affected. You can view and change the set of variations a note belongs to on the Variations/Flags Tab of the Note Properties window.

If a note belongs to multiple variations and is deleted while only some of those variations are active, the note is deleted only from the variations that are active.

When you copy a note by dragging it, the copy belongs to the same variations as the original, but only to the ones that are active. For example, suppose a note belongs to variations 1 and 3, but variations 1 and 2 are active. You press the CTRL key and drag the note so that a copy of it is made. The new note is added only to variation 1, not to variation 2.

Notes pasted from the Clipboard, however, belong to every variation that is active, regardless of which variations they were copied from.


Merging and Copying Variations

You can activate multiple variations in a part and merge them so that all visible notes belong to all active variations. For example, if you activate variations 1 and 2, notes belonging to both are displayed. Right-click the note editing window and select Merge Variations on the shortcut menu.

To make a new copy of a variation, activate the variation, activate an empty variation, and merge the two. All notes from the original variation are copied to the new one. Remember to make the original variation inactive if you wish to edit only the copy.


Auditioning Variations

When you play a pattern in Pattern Editor, you hear only the variations that are active. All active variations in all parts are played simultaneously.

To play a single variation by itself, double-click the button for the variation to make other variations inactive.

To play all variations one at a time, play the pattern by selecting it in the Style Designer Window. To choose options for controlling the order of variation playback, see Part Properties.


Silent Variations

You can enable an empty variation in a part so that it is included in the variations that are selected during playback. This causes the part to be silent sometimes during playback. The more silent variations you enable, the more likely it is that the part will be silent.


Variation Choices

Some pattern variations may be more suitable for playback with some chords than with others. For example, some variations might work well when played with a major chord, but not when played with a minor chord. Pattern Editor enables you to ensure that variations are not selected when unsuitable chords are being played.

Normally, variations are selected only from those that are enabled for the current chord. But if no variations are enabled for the current chord, a variation is selected at random from the full set.

By default, all variations are enabled to play with all types of chords. Use the Variation Choices Window to turn off chord types over which the variation should not play. Open the window by clicking the large button at the right of the Variation Buttons.


Variation Choices Window

The Variation Choices window contains the settings for all 32 variations in a part. The following figure shows part of the full display.

Variation Choices window

The window lists the variations in the pattern in the leftmost column. Next to each variation number is a rectangular selection button used for selecting an entire row. Selected rows are displayed in red.

The selection button is followed by a row of buttons for chord criteria. If a button is down, the variation is enabled for that criterion; if it is up, the variation will not play when the chord matches the criterion. For more information, see Variation Choices Settings.

When one or more rows are selected, right-click to display a shortcut menu. The following commands are available for selected rows:

  • Enable and Disable

    Enable or disable the selected variations. This is equivalent to enabling or disabling the variations by using the Variation Buttons in the part editing window.

  • Copy Row(s)

    Copy button settings from the selected rows.

  • Paste Row(s)

    Paste button settings to the selected rows. The number of selected rows must be the same as the number from which settings were copied.

  • IMA

    Display old-style variation choices settings. See IMA Variation Choices Settings.

  • DirectMusic

    Display standard variation choices settings.


Variation Choices Settings

When you choose a setting for whether a variation plays with a chord, you are not choosing a chord built on a specific chord root, such as C or F. Instead, you are choosing the functional position, such as I or IV, of the chords in the segment.

The variation choices work jointly with the key of a segment. After you create settings in the Variation Choices window, the behavior of the variations in a pattern remains consistent for any segment you use to play the style or pattern. If you place a new chord in a segment, the variations in the pattern are selected to play with that chord according to the chord's role in the key of the segment.

All segments use a key setting identified by a root name only. It is assumed that the key is major, regardless of whether you intend the segment to have a minor sounding key. For example, a segment you design to sound as though it is in the key of A minor must have a key setting of C major. A minor is the relative minor of C major. The relative minor of a major key is always a minor third below the root of the major key.

For information about setting the key of a segment, see Chord Track Properties.

The Variation Choices window is not affected by a pattern's chord for composition. If you use the Variation Choices window to enable a variation for a chord type, the notes of the pattern adjust to fit that chord and its scale, even if the new chord is radically different from the original chord for composition.

For example, if you create a pattern using a Gmi 7 chord and place the notes Bb, C, D, and F in a variation, these pitches are considered steps 3, 4, 5, and 7 of the Gmi 7 chord and its scale. If you enable the variation to play with an Fmaj 7(#11, #5) chord, the steps 3, 4, 5, and 7 are interpreted as the notes A-natural, B-natural, C-sharp, and E-natural. The nature of the variation changes considerably from what you may have intended when you chose the original chord for composition.

The chord criterion buttons are grouped into the following four categories:

  • Functions

    Functions include the chord root, based on the seven pitches of a major scale, and the chord quality on which the variation can play as it encounters chords in a segment. When you choose the chord root, you are selecting from the seven tones in the major scale of the segment's key. When you choose the chord quality, you are identifying whether the basic triad of the chord is major (uppercase Roman numerals), minor (lowercase), or diminished or augmented (lowercase italic).

  • Root

    These buttons specify whether a chord root must specifically be one of the seven tones in the major scale of the segment's key or if it can be a chromatic alteration (sharp or flat) of a scale tone.

  • Type

    These buttons specify whether a variation can play using a triad, a chord with an added 6th or 7th tone, or a complex chord. Complex chords contain more than four notes and are usually a 7th chord with an extension of a 9th, 11th, or 13th.

  • Destination

    These buttons specify whether a variation can be used with a chord that leads to a destination chord built on the 1st or 5th step of the segment's key. For example, if the ->I button is selected, the variation is used with a chord that leads to another chord built on the 1st of the key. However, the chord being played must also fit all other settings for function, root, and type.

    As soon as the ->I button is used in a variation, all other variations that do not have the ->I button turned on are ignored, even if their chord criteria settings match the chord being played.

    You can turn on the ->I or ->V button in more than one variation. In this case, a chord that leads to a chord built on the 1st or 5th of the key can use any variation set for ->I or ->V, respectively, selecting from them at random.


IMA Variation Choices Settings

DirectMusic Producer provides compatibility with the variation choices format used in Microsoft Interactive Music Architecture (IMA). You can choose to use the IMA variation choices settings with the patterns you create, as well as with IMA files. Switch selected rows from one format to the other by using the shortcut menu; see Variation Choices Window.

The following figure shows variation 1 using the standard format and variation 2 using the IMA format.

Standard and IMA variation choices

The four types of criteria in the IMA format are applied as follows:

  • Functions

    Selects a chord root, based on the seven pitches of a major scale, on which the variation can play as it encounters chords in a segment. When you choose a chord root, you are selecting from the seven tones in the major scale of the segment's key.

  • Root

    Enables the variation to use chords with roots outside the major scale of the segment's key. The chord root can be one of the seven tones in the major scale or a chromatic alteration (sharp or flat) of a scale tone.

    In using the M, m, and oth buttons, you choose chord qualities over which the variation can play as it encounters chords in a segment. When you choose a chord quality, you are identifying whether the basic triad of the chord is major, minor, diminished, or augmented. When the M button is enabled, the variation plays with any chord in which the bottom three notes form a major triad. When the m button is enabled, the variation plays over any chord in which the bottom three notes form a minor triad. For all other triads, diminished or augmented, select the oth button.

  • Type

    Indicates whether a variation can play over a simple (Sim) or complex (Com) chord. Simple chords include triads or chords with an added 6th or 7th tone. Complex chords contain more than four notes and are usually a 7th chord with an extension of a 9th, 11th, or 13th.

  • Destination

    Indicates whether a variation can be used with a chord that leads to a destination chord built on the 1st or 5th step of the segment's key. For example, if the ->I button is selected, the variation is used with a chord that leads to another chord built on the first of the key. However, the chord being played must also fit all other criteria settings for function, root, and type.

    You can turn on the ->I or ->V button in more than one variation. In this case, a chord that leads to a chord built on the 1st or 5th of the key can use any variation set for ->I or ->V, respectively, selecting from them at random.


Variation Switch Points

Each part in a pattern has a variation switch point strip into which you can place markers, as shown in the following figure.

Variation switch point strip

Green markers are enter switch points, and red markers are exit switch points. If a marker has the Trigger only with Chord Change property, the bar has a dark outline on three sides. Markers that belong to multiple variations are displayed with hash marks. Selected markers, such as the rightmost ones in the figure, are darker in color.

Markers can be entered in three ways:

  • Right-click the strip and select Insert Switch Point on the shortcut menu. Select the type of marker on the submenu. For information on the options, see Variation Switch Point Properties.
  • Click the strip and press the INSERT key. Enter and exit markers are inserted. Change the type, if necessary, in the Variation Switch Point Properties window.
  • Right-click the strip and select Mark All on the shortcut menu. On the submenu, select the division where you want markers to occur. Enter and exit markers are inserted at every measure, beat, or grid.

Variation switch points are used as follows:

  • An enter marker serves the same purpose as an enter switch point in the Marker Track. In a transition, if the normal start point of the new segment is aligned with a past event, the segment can start playing at or near an enter marker in the first selected variation. The variation is selected according to how closely its next enter marker lines up with the start time.
  • Variations without switch points normally play in their entirety, as long as they are compatible with the current chord. However, if a variation has an exit marker, a new variation is chosen at that point. When changing variations, the enter switch points of candidate variations are examined, to find the variation with the closest enter marker on or after the current time. The switch to the new variation starts immediately, even if the enter marker of the selected variation is after the current time.

    Note The new variation can be the same as the old one, as long as it is compatible with the current chord.

  • Enter and exit markers can be configured so that they are valid only when a chord change occurs. If an exit marker is configured in this way, it is ignored unless there is a chord change, and the variation continues playing. If an enter marker is configured in this way, the variation is not a candidate for selection when a switch occurs, unless that switch coincides with a chord change. See Variation Switch Point Properties.

    Note If the current variation is incompatible with a new chord, a variation switch always occurs, regardless of whether the current variation contains an exit marker.

  • If settings in the Secondary Segment Audition Options dialog box or the Segment/Motif Trigger Properties window of a trigger in a Segment Trigger Track are selected so that the secondary segment is to begin at a trigger, this trigger can be a variation switch point in the pattern being played.


Variation Switch Point Properties

The following Properties Window in the following figure contains properties for selected markers in the variation switch point strip of a pattern part.

Variation Switch Point Properties

The Marker(s) tab contains the following settings:

  • Enter

    If this check box is selected, the variation can start playing at this point.

  • Exit

    If this check box is selected, the variation can stop playing at this point.

  • Trigger only with Chord Change

    If the corresponding check box is selected, the enter or exit marker is valid only for variation switches caused by a chord change.

  • Variations

    Variations the marker belongs to. At least one variation must be selected.


DLS Designer

The DLS Designer component enables you to create collections of instruments based on the Downloadable Sounds Level 2 standard, published by the MIDI Manufacturers Association.

Devices that play MIDI notes can synthesize those notes in different ways, using one of the following to generate the appropriate timbres:

  • Algorithmic frequency modulation (FM). No sound samples are used. This is the technique used by older MIDI sound cards.
  • Wave tables in hardware. The timbres are based on sound samples hard-coded into the device.
  • Downloadable Sounds (DLS). The timbres are based on sound samples downloaded to the device as required. The device can be a software synthesizer, such as the Microsoft Synthesizer, or a hardware synthesizer.

The advantages of DLS over the other techniques include the following:

  • Unlimited number of available instruments. An instrument might represent the timbre of an actual musical instrument, a nonmusical sound effect, or any other sound, even a fully composed measure of music.
  • No need for special hardware, other than a standard sound card, as long as a software synthesizer is available. The Microsoft Synthesizer is available on all systems that have the DirectMusic components.
  • Consistent results on all hardware.
  • Universal, full set of features for processing samples, such as articulation and use of different samples for different pitches and velocities.

A DLS instrument is always created as part of a collection. A DLS collection is usually made up of multiple DLS instruments that you combine and distribute as a group for use with note-based content. The collection contains all the instrument settings and waves.

DirectMusic Producer comes with a complete General MIDI collection of DLS instruments in the GM.dls file. The GM.dls collection is available to all projects at all times, and you do not need to add it to the project tree. You can distribute this collection, unaltered, with your files; however, generally there is no need to do so, because it is available on all systems that have DirectMusic installed. For more information, see Default GM Sound Set.

This section describes how to create DLS instruments as part of custom collections.


DLS Level 1 and Level 2

Beginning with the DirectX 8.0 release of DirectMusic Producer, you can design DLS collections to take full advantage of the Downloadable Sounds Level 2 standard. Previous releases of DirectMusic Producer included support only for Level 1.

DLS Level 2 provides several new options for designing DLS instruments:

  • Stereo samples

In addition to mono wave files, you can insert stereo waves into the Waves folder of a DLS collection, and integrate them into DLS 2 instruments.

  • 128 regions for all DLS instruments

DLS Level 2 allows all DLS instruments to have a separate region, based on its own wave sample, for each of the 128 MIDI notes. DLS Level 1 instruments have a maximum of 16 regions.

  • Multiple layers

DLS Level 2 enables each MIDI note to derive from multiple waves. Waves can be layered to achieve a richer timbre, or can be used singly at different note velocities.

  • Two LFO generators

The Low Frequency Oscillator capabilities of the articulation are doubled, from one to two LFO controls. The first is designated for volume while the second is for pitch or filter modulation.

  • Six-segment envelope generators

DLS Level 1 supported envelopes with four segments for volume and pitch articulation: Attack, Decay, Sustain and Release. Level 2 adds Delay and Hold.

  • Conditional regions and articulations

Sounds can be tailored to the features available on the synthesizer.


Default GM Sound Set

Microsoft DirectMusic Producer comes with a complete General MIDI collection of DLS instruments called the GM.dls collection. You can use this collection with any DirectMusic Producer piece, and it is available on all DirectMusic playback systems.

The default GM.dls collection is available to all projects at all times, and you should not add it to the project tree.

The sounds in this DLS collection consist of the GM/GS® Sound Set that are licensed from Roland Corporation and are the same as those used for Roland's Sound Canvas™ family of music synthesizers.

Important For more information about legal issues related to using the GM.dls., click the copyright link at the bottom of this page.

Using the default playback settings in DirectMusic Producer, the instrument sounds you assign to a PChannel are played though the Microsoft Synthesizer. If you assign a PChannel to play using a General MIDI instrument, the default GM.dls sound set is used. But if playback is through a hardware device that is not DLS-compatible, the device's own General MIDI sounds are substituted for the sounds in the default collection.

The properties of a PChannel can be set to override hardware collections and force an individual instrument to play using GM.dls. See Always Use the Default GM Set.

When a Producer file is played using the Microsoft Windows CE operating system, the MSB and LSB numbers of a sound are ignored. A GS instrument is played using the GM instrument with an equivalent patch number.

If you use the default DLS collection when designing your files, and do not assign any parts to play using sounds from other sound sets or hardware devices, your DirectMusic Producer piece plays using only the sounds in the GM.dls collection, and you are assured that all users will hear your files with uniform instrument sounds.


Instruments in the GM.dls Collection

The GM.dls collection contains 254 musical instrument sounds and sound effects. Each instrument has a name, such as Piano 1 or Piano 2, and three identification numbers, in the range from 0 to 127, that distinguish it from other instruments. These numbers are displayed next to the instrument name in the PChannel Properties window and the instrument name in the project tree, and can be assigned in the DLS Designer Window. From left to right in all these displays, the three numbers represent the following properties for the instrument:

  • Most significant byte (MSB)
  • Least significant byte (LSB)
  • MIDI patch number

For more information, see Patch Numbers and Bank Select.

The General MIDI standard establishes standard usage of the 128 patch numbers for specific instrument types when the MSB and LSB are both zero.

The instruments listed in the following tables are available in the GM.dls collection. Drum kits are listed in the second table.

Name | MSB | LSB | Patch
12-str.Gt | 8 | 0 | 25
5th Saw Wave | 0 | 0 | 86
60's E.Piano | 24 | 0 | 4
60's Organ 1 | 16 | 0 | 16
808 Tom | 8 | 0 | 118
Accordion Fr | 0 | 0 | 21
Accordion It | 8 | 0 | 21
Acoustic Bs. | 0 | 0 | 32
Agogo | 0 | 0 | 113
Alto Sax | 0 | 0 | 65
AnalogBrass1 | 16 | 0 | 62
AnalogBrass2 | 16 | 0 | 63
Applause | 0 | 0 | 126
Atmosphere | 0 | 0 | 99
Bagpipe | 0 | 0 | 109
Bandoneon | 0 | 0 | 23
Banjo | 0 | 0 | 105
Baritone Sax | 0 | 0 | 67
Bass & Lead | 0 | 0 | 87
Bassoon | 0 | 0 | 70
Bird | 0 | 0 | 123
Bird 2 | 3 | 0 | 123
Bottle Blow | 0 | 0 | 76
Bowed Glass | 0 | 0 | 92
Brass 1 | 0 | 0 | 61
Brass 2 | 8 | 0 | 61
Breath Noise | 0 | 0 | 121
Brightness | 0 | 0 | 100
Bubble | 5 | 0 | 122
Burst Noise | 9 | 0 | 125
Car-Crash | 4 | 0 | 125
Car-Engine | 1 | 0 | 125
Carillon | 9 | 0 | 14
Car-Pass | 3 | 0 | 125
Car-Stop | 2 | 0 | 125
Castanets | 8 | 0 | 115
Celesta | 0 | 0 | 8
Cello | 0 | 0 | 42
Charang | 0 | 0 | 84
Chiffer Lead | 0 | 0 | 83
Choir Aahs | 0 | 0 | 52
Choir Aahs 2 | 32 | 0 | 52
Chorus Gt. | 8 | 0 | 27
Church Bell | 8 | 0 | 14
Church Org.1 | 0 | 0 | 19
Church Org.2 | 8 | 0 | 19
Church Org.3 | 16 | 0 | 19
Clarinet | 0 | 0 | 71
Clav. | 0 | 0 | 7
Clean Gt. | 0 | 0 | 27
Concert BD | 8 | 0 | 116
Contrabass | 0 | 0 | 43
Coupled Hps. | 8 | 0 | 6
Crystal | 0 | 0 | 98
Detuned EP 1 | 8 | 0 | 4
Detuned EP 2 | 8 | 0 | 5
Detuned Or.1 | 8 | 0 | 16
Detuned Or.2 | 8 | 0 | 17
DistortionGt | 0 | 0 | 30
Doctor Solo | 8 | 0 | 81
Dog | 1 | 0 | 123
Door | 3 | 0 | 124
DoorCreaking | 2 | 0 | 124
E.Piano 1 | 0 | 0 | 4
E.Piano 1v | 16 | 0 | 4
E.Piano 2 | 0 | 0 | 5
E.Piano 2v | 16 | 0 | 5
Echo Bell | 1 | 0 | 102
Echo Drops | 0 | 0 | 102
Echo Pan | 2 | 0 | 102
Elec Perc. | 9 | 0 | 118
English Horn | 0 | 0 | 69
Explosion | 3 | 0 | 127
Fantasia | 0 | 0 | 88
Feedback Gt. | 8 | 0 | 30
Fiddle | 0 | 0 | 110
Fingered Bs. | 0 | 0 | 33
Fl.Key Click | 1 | 0 | 121
Flute | 0 | 0 | 73
Footsteps | 5 | 0 | 126
Fr.Horn 2 | 1 | 0 | 60
French Horns | 0 | 0 | 60
Fretless Bs. | 0 | 0 | 35
Funk Gt. | 8 | 0 | 28
Funk Gt.2 | 16 | 0 | 28
Glockenspiel | 0 | 0 | 9
Goblin | 0 | 0 | 101
Gt. Feedback | 8 | 0 | 31
Gt.Cut Noise | 1 | 0 | 120
Gt.FretNoise | 0 | 0 | 120
Gt.Harmonics | 0 | 0 | 31
Gun Shot | 0 | 0 | 127
Halo Pad | 0 | 0 | 94
Harmonica | 0 | 0 | 22
Harp | 0 | 0 | 46
Harpsi.o | 24 | 0 | 6
Harpsichord | 0 | 0 | 6
Harpsichord 2 | 16 | 0 | 6
Hawaiian Gt. | 8 | 0 | 26
Heart Beat | 4 | 0 | 126
Helicopter | 0 | 0 | 125
Honky-tonk | 0 | 0 | 3
Honky-tonk 2 | 8 | 0 | 3
Horse-Gallop | 2 | 0 | 123
Ice Rain | 0 | 0 | 96
Jazz Gt. | 0 | 0 | 26
Jetplane | 7 | 0 | 125
Kalimba | 0 | 0 | 108
Koto | 0 | 0 | 107
Lasergun | 2 | 0 | 127
Laughing | 1 | 0 | 126
Machine Gun | 1 | 0 | 127
Mandolin | 16 | 0 | 25
Marimba | 0 | 0 | 12
Marimba 2 | 8 | 0 | 12
Melo. Tom 1 | 0 | 0 | 117
Melo. Tom 2 | 8 | 0 | 117
Metal Pad | 0 | 0 | 93
Music Box | 0 | 0 | 10
Muted Gt. | 0 | 0 | 28
MutedTrumpet | 0 | 0 | 59
Nylon Gt.2 | 32 | 0 | 24
Nylon Gt.o | 16 | 0 | 24
Nylon-str.Gt | 0 | 0 | 24
Oboe | 0 | 0 | 68
Ocarina | 0 | 0 | 79
Orchestra | 8 | 0 | 48
OrchestraHit | 0 | 0 | 55
Organ 1 | 0 | 0 | 16
Organ 2 | 0 | 0 | 17
Organ 3 | 0 | 0 | 18
Organ 4 | 32 | 0 | 16
Organ 5 | 32 | 0 | 17
Overdrive Gt | 0 | 0 | 29
Pan Flute | 0 | 0 | 75
Piano 1 | 0 | 0 | 0
Piano 1d | 16 | 0 | 0
Piano 2 | 8 | 0 | 0
Piano 3 | 0 | 0 | 1
Piano 4 | 8 | 0 | 1
Piano 5 | 0 | 0 | 2
Piano 6 | 8 | 0 | 2
Piccolo | 0 | 0 | 72
Picked Bs. | 0 | 0 | 34
PizzicatoStr | 0 | 0 | 45
Polysynth | 0 | 0 | 90
Punch | 3 | 0 | 126
Rain | 1 | 0 | 122
Recorder | 0 | 0 | 74
Reed Organ | 0 | 0 | 20
Reverse Cym. | 0 | 0 | 119
Rubber Bass | 16 | 0 | 39
Santur | 0 | 0 | 15
Saw | 1 | 0 | 81
Saw Wave | 0 | 0 | 81
Scratch | 4 | 0 | 124
Screaming | 2 | 0 | 126
Seashore | 0 | 0 | 122
Shakuhachi | 0 | 0 | 77
Shamisen | 0 | 0 | 106
Shanai | 0 | 0 | 111
Sine Wave | 8 | 0 | 80
Siren | 5 | 0 | 125
Sitar | 0 | 0 | 104
Sitar 2 | 1 | 0 | 104
Slap Bass 1 | 0 | 0 | 36
Slap Bass 2 | 0 | 0 | 37
Slow Strings | 0 | 0 | 49
Slow Violin | 8 | 0 | 40
Solo Vox | 0 | 0 | 85
Soprano Sax | 0 | 0 | 64
Soundtrack | 0 | 0 | 97
Space Voice | 0 | 0 | 91
Square | 1 | 0 | 80
Square Wave | 0 | 0 | 80
Star Theme | 0 | 0 | 103
Starship | 8 | 0 | 125
Steel Drums | 0 | 0 | 114
Steel-str.Gt | 0 | 0 | 25
Stream | 4 | 0 | 122
String Slap | 2 | 0 | 120
Strings | 0 | 0 | 48
Sweep Pad | 0 | 0 | 95
Syn Mallet | 1 | 0 | 98
Syn.Calliope | 0 | 0 | 82
Syn.Strings1 | 0 | 0 | 50
Syn.Strings2 | 0 | 0 | 51
Syn.Strings3 | 8 | 0 | 50
Synth Bass 1 | 0 | 0 | 38
Synth Bass 2 | 0 | 0 | 39
Synth Bass 3 | 8 | 0 | 38
Synth Bass 4 | 8 | 0 | 39
Synth Brass1 | 0 | 0 | 62
Synth Brass2 | 0 | 0 | 63
Synth Brass3 | 8 | 0 | 62
Synth Brass4 | 8 | 0 | 63
Synth Drum | 0 | 0 | 118
SynthBass101 | 1 | 0 | 38
SynVox | 0 | 0 | 54
Taiko | 0 | 0 | 116
Taisho Koto | 8 | 0 | 107
Telephone 1 | 0 | 0 | 124
Telephone 2 | 1 | 0 | 124
Tenor Sax | 0 | 0 | 66
Thunder | 2 | 0 | 122
Timpani | 0 | 0 | 47
Tinkle Bell | 0 | 0 | 112
Train | 6 | 0 | 125
Tremolo Str | 0 | 0 | 44
Trombone | 0 | 0 | 57
Trombone 2 | 1 | 0 | 57
Trumpet | 0 | 0 | 56
Tuba | 0 | 0 | 58
Tubular-bell | 0 | 0 | 14
Ukulele | 8 | 0 | 24
Vibraphone | 0 | 0 | 11
Vibraphone 2 | 8 | 0 | 11
Viola | 0 | 0 | 41
Violin | 0 | 0 | 40
Voice Oohs | 0 | 0 | 53
Warm Pad | 0 | 0 | 89
Whistle | 0 | 0 | 78
Wind | 3 | 0 | 122
Wind Chimes | 5 | 0 | 124
Woodblock | 0 | 0 | 115
Xylophone | 0 | 0 | 13

Drum Kits

Name | MSB | LSB | Patch
Brush | 0 | 0 | 40
Electronic | 0 | 0 | 24
Jazz | 0 | 0 | 32
Power | 0 | 0 | 16
Room | 0 | 0 | 8
SFX | 0 | 0 | 56
Standard | 0 | 0 | 0
TR-808 | 0 | 0 | 25


Basic Steps in Creating a DLS Collection

The following is a brief outline of how to create a new DLS collection. Details on each step are given later in this section.

  1. On the File menu, click New.
  2. In the New box, double-click DLS Collection. A new DLS collection is added to the project tree.
  3. In the project tree, insert or drag wave files into the Waves folder of the new DLS collection. See Adding Waves to a DLS Collection.
  4. In the project tree, insert or drag instrument files into the Instruments folder of the new DLS collection. See Adding Instruments to a DLS Collection.
  5. Double-click the newly added instrument to open the DLS Designer Window.
  6. Specify which wave files to use in the instrument and define regions in the instrument for each wave used.
  7. Define articulations for each region, or for the entire instrument.

Repeat steps 4 though 7 to create additional instruments in the DLS collection. You can use wave files already in the collection with multiple instruments, or add more wave files to the collection.


Managing DLS Collections

The components of a DLS collection are shown in the following figure.

DLS collection in the project tree

The following main components make up the collection:

  • Instruments

    Individual instrument sounds designed to use multiple wave samples, along with parameters that describe how the samples are used. Properties of instruments are edited in the Instrument Properties window and in the DLS Designer Window. See also Adding Instruments to a DLS Collection.

  • Waves

    Waveform sound files from digitally recorded samples, along with parameters that describe how to perform the sound. The Waves folder can contain unused waves as well as waves used by instruments. You can add any .wav file to the Waves folder. Properties of waves are edited in the Wave Component Properties window and in Wave Editor. See also Adding Waves to a DLS Collection

Each instrument has the following components:

  • Articulations list

    Sets of parameters that define the characteristics of how the volume and pitch of a sound are attacked, sustained, decayed, and released, plus settings for the use of low frequency oscillation and filters.

    Properties of the list are edited in the Articulations List Properties window. Individual articulations are edited in the DLS Designer Window.

    Add an articulation to an instrument by right-clicking the Articulations List folder and selecting Insert Articulation on the shortcut menu. Apply an articulation to the instrument for audition purposes by selecting it.

    Add an articulation to a region by right-clicking the region in the Regions folder and selecting Insert Articulation on the shortcut menu.

    Note Regions that do not have their own articulations use the default instrument articulation.

    When the DLS collection is downloaded to a synthesizer, all articulations in the list are downloaded with the instrument and applied in order. To be sure of getting predictable results, it's best to have only one articulation in the list.

    For more information on editing articulations, see Articulation Settings.

  • Regions

    Pitch ranges, each of which may use a different wave for synthesis. Properties of regions are edited in the Region Properties window and in the DLS Designer Window. You can add a region to an instrument by right-clicking the Regions folder and selecting Insert Region on the shortcut menu. Regions can also be added in the DLS Designer Window.

Instruments and waves can be moved and copied between DLS collections. When you move or copy an instrument, you are asked whether you want to copy the instrument's waves at the same time. Generally you should click Yes. If you click No, the instrument is reset to use waves that are already in the destination DLS collection.

For general information on managing objects in the project tree, see the following topics:

  • Managing Components
  • Project Tree


Adding Instruments to a DLS Collection

You can add an instrument to the Instruments folder of a DLS collection in the project tree in the following ways:

  • Right-click the Instrument folder and click Insert Instrument on the shortcut menu. An instrument called "Instrument" is added to the folder. You can change the name by editing it in the project tree or in the Properties Window for the instrument; see Instrument Properties. You can edit its patch and bank select numbers in the DLS Designer Window.
  • Drag an instrument from another DLS collection Instruments folder. To copy the instrument, press CTRL while dragging; or right-click to drag, then select Copy from the shortcut menu when you drop the instrument.


Adding Waves to a DLS Collection

Waves for DLS instruments are taken from .wav files or from other collections. DirectMusic Producer does not have the ability to record waves.

Waves can be in mono or stereo format. It is recommended that waves placed in DLS collections have sample rates between 3kHz and 80kHz. If a wave's sample rate is outside of these boundaries, its pitch will be incorrect on playback.

Using extremely large waves in a DLS instrument is not recommended. To avoid overtaxing system memory, it is better to split a large wave into smaller sections and combine multiple smaller sections in an instrument sound.

You can add a wave to the Waves folder of a DLS collection in the project tree in the following ways:

  • Right-click the Waves folder and click Insert Wave on the shortcut menu. You can select multiple files in the Insert Wave Files Into Collection dialog box.
  • Drag a wave from another DLS collection or from a top-level wave (.wvp) component to the DLS Waves folder. To copy the wave, press CTRL while dragging; or right-click to drag, then select Copy from the shortcut menu displayed when you release the mouse button. Note that the last saved version of the wave is moved or copied; any changes made in Wave Editor but not saved are lost.


Replacing Waves in a DLS Collection

A wave can be replaced throughout a collection by using the following procedure:

  1. Right-click on the icon of the wave in the Waves folder.
  2. On the shortcut menu, click Replace.
  3. In the Open Wave dialog box, open a .wvp or .wav file.
  4. Click OK.

The wave is replaced in the Waves folder and in all regions where it is used.


DLS Collection Properties

The Properties Window for a DLS collection in the project tree has the following tabs:

  • Collection tab

    Generic set of component properties. See Info Tab.

  • Collection Statistics tab

    Read-only properties, including the number of samples, regions, waves, instruments, and articulations in the collection.


Instrument Properties

The Properties Window for a DLS instrument in the project tree has a single Info Tab containing generic properties.


Articulations List Properties

The Properties Window for an articulations list contains the following settings:

  • Condition

    Select a condition that restricts when the articulations apply. To create a new condition, click Edit. For more information, see Conditional Regions and Articulations.

  • DLS1

    Select if the articulations follow the Downloadable Sounds Level 1 standard.


Regions and Layers

A key feature of the DLS Level 2 standard is the ability to base instrument timbres on different or multiple waves, depending on the pitch and velocity of the note.

The waves associated with an instrument are organized in layers. Within each layer, the pitch range is divided into regions of one or more notes. The pitch range can also include blank, unused areas. Each region is associated with a wave. This arrangement is shown in the Instrument Graphical Interface of DLS Designer.

When a note plays, it is synthesized from waves belonging to regions in one or more layers. A region's wave is used if the Region Settings meet the following criteria:

  • The region's pitch range includes the pitch of the note being played.
  • The region's velocity range includes the velocity of the note being played.
  • No special conditions have been attached to the region that preclude it from playing on the current synthesizer.

Musical instruments that have different characteristics in different registers, such as a piano or clarinet, should have regions. For example, each octave in a violin sound can be a region based on a recording of the instrument playing a note at the lowest pitch in the octave. Within each octave, higher pitches are synthesized by increasing the pitch of the wave sample.

In theory, you could take a sample from every one of 128 notes on an acoustic instrument and place them into regions that correspond exactly with the pitch at which the sample was taken. However, this might be impractical because of the amount of system resources required to store and play the instrument.

Regions in layers can overlap. For example, an instrument might have 10 regions in one layer and five larger regions in a second layer. If overlapping regions are set to play at a given pitch and velocity, they are combined to form a richer timbre for the note.

Not every pitch has to be included in a region in every layer. In fact, an instrument could have a single layer consisting of a single region with a range of just one pitch. At other pitches, the instrument would be silent.

DLS Level 1 synthesizers do not support layers, and take regions only from the lowest layer displayed in the DLS Designer Window.

DLS Level 2 includes the two articulation types that are not included in DLS Level 1. If you create a region in the bottom layer, and use instrument articulations for DLS Level 2, the two additional articulation types are ignored when the instrument is played using a DLS1 synthesizer. See Articulation Settings.


Conditional Regions and Articulations

You can set conditions in Region Settings and Articulations List Properties that control the circumstances in which regions and articulations are downloaded and used when an instrument is played. For example, you can specify that some regions be used with DLS2 synthesizers and others with DLS1 synthesizers, or restrict a region so it plays only on a software synthesizer.

If a region has conditions that do not fit the playback environment, the wave is not downloaded to the synthesizer, and settings for the region are not used. If no other region has conditions that fit the playback environment, the instrument is silent for all notes in the region.

Similarly, an articulations list is not used if the conditions set for it are not met.

Conditions are ignored by DLS1 synthesizers, even if a region with conditions is in the bottom layer in the DLS Designer Window, which is the only layer used by DLS1.

If you want to tailor regions for DLS1 and DLS2 synthesizers, put all DLS2 regions in layers other than the bottom one. To have the DLS2 synthesizer ignore regions in the bottom layer, attach a condition such as the following:

(SupportsDLS1 && (SamplePlaybackRate <= 22050))

Because a DLS2 synthesizer uses a sample playback rate of 44100, this condition specifies both that the region is meant for DLS1, and that a DLS2 synthesizer should ignore it.

Each articulations list or region can have a single condition. However, this condition can be a complex statement that in effect sets multiple conditions. When you create a condition, it becomes available in the drop-down list both in the DLS Designer Window and in the Articulations List Properties window.

See Also

  • Condition Script Editor


Condition Script Editor

The Condition Script Editor window, shown in the figure below, is used to design conditions for Conditional Regions and Articulations. Open it by clicking Edit in the Articulations List Properties window or in the Region area of the DLS Designer Window.

Condition Script Editor

A condition is a logical statement consisting of queries, values, and operators. A query is the name of a property whose value you wish to test. An operator defines the relationship between two things; for example, between a query and a value.

In order for the condition to be true, the statement in the condition must be true. Statements can be complex, requiring several different things to be true, or any one thing to be true.

For example, if x is 2, all the following statements are true:

  • (x is greater than 1)
  • (x is greater than 5) or (x is greater than 1)
  • (x is greater than 1) and (x is greater than 0)
  • ((x is greater than 1) and (x is greater than 5)) or (x is greater than 0)

Note the use of parentheses in the last example. The statement is divided into two parts divided by "or", and only one part has to be true for the whole statement to be true. Because (x is greater than 5) is false, the first part of the statement is false. However, (x is greater than 0) is true, and therefore the whole statement is true.

In Condition Script Editor, queries that can be either true or false do not require explicit comparisons. For example, the following statement:

SupportsDLS1

is equivalent to:

SupportsDLS = 1

Similarly, the following statement, where "!" means "not":

! SupportsDLS1

is equivalent to:

SupportsDLS = 0

Note that there are no true and false values as such; if you want to make the Boolean evaluation explicit, you must use 0 or 1.

Shortcut menus simplify the entry of correct syntax at the text cursor in the editing window. Right-click anywhere in the window to open the shortcut menu, and select either Queries or Operators to display a submenu.

The following figure shows the Queries menu.

This figure shows the Operators menu.

Use of the bitwise operators is not recommended in conditions, unless you are using a specific value that is required by the manufacturer of a synthesizer. These operators compare the bits in queries and values, and are not equivalent to the logical AND and OR operators.

Combine queries in a condition by placing the logical AND and OR operators between them. For example, you can right-click the window to enter the GMInHardware query, then right-click again to enter the && (Logical AND) operator, then right-click again to enter the SupportsDLS2 query. Click OK to close the window. The condition, enclosed in parentheses, is added to the Condition list as follows:

(GMInHardware && SupportsDLS2)

This condition requires a General MIDI hardware synthesizer that supports DLS2.

After you create conditions, you can test them by selecting different playback environments in the DLS Conditions Toolbar. When you select a playback environment and play segments or other files, you can hear the use of the regions in the DLS instruments that correspond to the environment.


Sample Conditions

Following are some examples of useful conditions you can create:

(SupportsDLS1 && (SamplePlaybackRate <= 22050))

Enables use by a DLS1 synthesizer, and prevents DLS2 use of the region, because DLS2 synthesizers use a sample playback rate of 44100 or higher.

(SupportsDLS2 && (SamplePlaybackRate >= 44100))

Enables use by a DLS2 synthesizer, and prevents DLS1 use of the region, because DLS2 synthesizers use a sample playback rate of 44100 or higher.

(GMInHardware && SupportsDLS2)

Requires use by a General MIDI hardware synthesizer that supports DLS2.

((! GMInHardware) && SupportsDLS2)

The General MIDI set must not be available in hardware. The synthesizer can be hardware or software, but DLS2 support is required.


DLS Designer Window

Double-clicking the icon of a DLS instrument in the project tree displays the instrument in the DLS Designer Window, shown in the following figure.

DLS Designer Window

The DLS Designer window consists of the following sections:

  • Instrument Graphical Interface

    This area displays all the MIDI pitches on a keyboard, together with layers and regions defined for the instrument. You can use this area to audition sounds and to select, move, and resize regions.

  • Instrument

    Settings for patch and instrument bank numbers, and for designating the instrument as a set of drum and percussion sounds. Settings apply to the entire DLS instrument, regardless of how many individual regions or layers you use to design the instrument. See Instrument Settings.

  • Audition Options

    Settings for each range that control the response when you click a key in the on-screen keyboard. This helps you to determine how the pitches in the region will sound when various MIDI velocities are used during playback. You can also isolate one layer of region assignments to hear only the waves used in that layer when you click the on-screen keyboard.

  • Region

    Settings for the selected region. See Region Settings.

  • Instrument Articulation or Region Articulation

    Articulation settings for the DLS instrument. If a the selected region has an Articulations List, the displayed settings apply only to that region, unless Use Instrument Articulation is selected for the region. If the selected region does not have an Articulations List, the displayed settings apply to all regions that do not have their own articulations. See Articulation Settings.


Instrument Graphical Interface

The instrument graphical interface, shown in the following figure, is used for managing regions and layers, and for auditioning sounds.

Instrument graphical interface

Layers are shown as horizontal strips above the keyboard. Use the scrollbar to view more layers. The lowest layer, labeled DLS1, is the only layer used by synthesizers that support only DLS Level 1; however, DLS Level 2 synthesizers use this level as well.

Regions are rectangles labeled with the name of the wave assigned to them. You can move and resize regions by using the mouse. Regions can be dragged from one layer to another. Press CTRL to copy a region while dragging it. The root note of the wave is marked by a dot on the keyboard; in the illustration, A#1 is so marked.

The keyboard contains all the notes from C0 to G10. You can an audition a region by selecting it and clicking a piano key, or by clicking the region. The note that is sounding is marked by a red dot on the keyboard. You can also audition the instrument at the root note of the wave, by using the Play or Play from Start button. If the root note is outside the region, the closest note to the root note plays. See also Audition Options.


To add a layer to an instrument

  1. In the graphical interface of the DLS Designer Window, click the space along the top of the keyboard to select a layer. Clicking a region also selects the layer.
  2. Right-click to open the shortcut menu.
  3. Select Insert Layer.

A layer is inserted beneath the selected layer.


To insert a new region in an instrument

  1. If necessary, resize regions or add a layer in the graphical interface of the DLS Designer Window to create an empty space. You can resize regions by using the mouse, or by adjusting the Note Range values in the Region area of the window.
  2. Press the CTRL key and click an empty space in a layer; or right-click and click Insert Region on the shortcut menu. A small region is inserted.
  3. Select a wave and adjust other settings for the new region in the Region area of the DLS Designer window.


Instrument Settings

The Instrument region in the DLS Designer Window contains the following settings for the instrument highlighted in the project tree:

  • MSB, LSB, and Patch

    Bank select and patch number. For an overview of these values, see Patch Numbers and Bank Select. For implementation details, see DLS Patch Conflicts.

  • Drums

    Select if the instrument is a drum kit. Drum kits use their own set of PChannels and have unique instrument sounds for every pitch. For more information on reserved PChannels, see PChannel Number.

  • Max Level

    Highest volume of any region in the instrument, as set in the Wave Component Properties or Region Properties. This value is read-only and is expressed as decibels of attenuation.

To change the name of the instrument, use the Instrument Properties window.


DLS Patch Conflicts

When you create new DLS instruments, it is recommended that you avoid using identical combinations of MSB, LSB, Patch, and Drums settings for two instruments in a project. This includes DLS instruments that you copy and place in a separate DLS collection.

When you edit these values for an instrument, they are compared with the equivalent values for all other instruments in collections that have been opened during this work session, even collections that have subsequently been closed. They are also compared with the default GM.dls collection. If all four values match, there is a conflict.

If you use the arrow keys to select numbers in the boxes, number combinations already in use are skipped to prevent conflicts. You can override this function manually by typing numbers in the edit boxes.

If you deliberately create a DLS instrument that conflicts with an instrument in the GM.dls collection, the DirectMusic playback components use the new instrument in place of the corresponding instrument in the GM.dls collection.


Patch Conflict Warnings

Patch conflict warnings are displayed in three circumstances:

  • Conflicts within a DLS Collection

    While you are editing a DLS instrument, there is a conflict with an instrument in the same DLS collection. When this warning is displayed, click Cancel to undo the last changes to the patch settings of the instrument, or click Ignore to allow the conflicting setting to remain.

  • Conflicts with a Different DLS Collection

    While you are editing a DLS instrument, there is a conflict with the default GM.dls collection, or with a different DLS collection in the project tree. This includes any DLS collection that has been opened in this work session, even if it was subsequently closed. When this warning is displayed, click Cancel to undo the last changes to the patch settings of the instrument, or click Ignore to allow the conflicting setting to remain.

  • Conflicts When First Opening a DLS Collection in a Project

    When you first open a DLS collection, DirectMusic Producer warns you of a conflict with another previously opened DLS collection in the project tree, or with the GM.dls collection, as shown in the following figure.

    Patch conflict warning

    When the warning is displayed, you can choose one of the four actions listed in the following table.

    Option | Effect
    Fix | Fix the conflict by setting new patch values for the instrument. You can change one or more values in the MSB, LSB, and Patch boxes, or let DirectMusic Producer resolve the conflict by changing one or more values. You can also select or deselect the Drum check box to differentiate the instrument from the one with which it conflicts.
    Fix All | Fix all the conflicts for the entire DLS collection being opened. DirectMusic Producer resolves the conflict for all instruments, usually by assigning an unused LSB value.
    Ignore | Ignore the conflict for the DLS instrument currently being opened.
    Ignore All | Ignore all conflicts in the collection being opened. You are not warned again until you reopen the DLS collection.

Note Fix and Fix All repair the DLS patch conflict in the DLS collection only. They do not update settings in bands that are referencing the DLS patch numbers that were in conflict. The band will continue to reference the old patch location, possibly causing it to play the wrong instrument sound or play no sound at all.


Audition Options

Audition a region in the selected layer, or regions in all layers, at a specific pitch by clicking a piano key in the graphical interface. The regions being played are highlighted. For more information, see Instrument Graphical Interface.

The Audition Options group box in the DLS Designer Window contains the following settings that affect the sound heard when a piano key is clicked:

  • Click Velocity

    Velocity of the note when it is played by clicking a piano key. This value can affect the selection of layers played. Enter a value in the range from 0 to 127.

  • Solo Layer

    If this option is selected, only the selected layer plays. If the layer is not valid for the Click Velocity value, it is silent.

  • Multiple Layer

    If this option is selected, all layers play, provided they are valid for the Click Velocity value.


Region Settings

The Region area of the DLS Designer Window contains the following settings:

  • Wave

    Choose a wave for the region from the drop-down list, which displays all waves in the Waves folder of the DLS collection. Stereo waves have three entries: one mono wave for each channel and one stereo wave. Unless you want to achieve some special effect by using the channels in different regions, select the stereo wave. To create an instrument that works on both DLS1 and DLS2 synthesizers, use only mono waves in the bottom layer and set conditions so that they are not played on DLS2 synthesizers. For more information, see Conditional Regions and Articulations.

    Click the Edit button to edit the wave using Wave Editor.

  • Root

    The root of a wave is the pitch at which it plays back at its original speed. The default root is set in the Wave Component Properties window. For example, when you create a region based on a wave that has a root of C5, the wave plays at its natural pitch when a C5 note is played. You can change this value for individual regions. This is especially useful for sound effects, which you might want to assign to pitch ranges outside their default root notes.

    For musical instruments other than drums, it is best to select a wave with a default root that fits in the region, and not alter the root. The default root represents the pitch at which the wave sounds most natural, and the wave will sound appropriate for all notes in the region. You can override the default root, but doing so causes notes to be transposed. For example, if you change the root note of a horn sound from C5 to C4, the wave plays at its original pitch when C4 is played, and at an unnaturally high pitch when C5 is played.

    When designing a drum instrument, you use up to 128 wave samples, with a different sample assigned to each note of the keyboard. In this case, you adjust the root note of the waves so that they match, or nearly match, the note that triggers them.

  • Condition

    Select an existing conditional statement, or click Edit to create a new one. The condition determines the circumstances under which the region will be downloaded to the playback device. For more information, see Conditional Regions and Articulations.

  • Note Range

    Enter or select a value in each of the two boxes to specify the lowest and highest pitches in the range of the selected region. Values can be entered using either the MIDI notation or as numbers in the range from 0 to 127. You can also enter these values by using a MIDI keyboard.

    A range can be from 1 to 128 pitches in size. Regions within a layer cannot overlap.

    You can also change the note range of a region by moving or resizing it in the graphical display, using the mouse.

  • Velocity Range

    Enter or select low and high values in the two boxes, in the range from 0 to 127, to specify a range of velocities at which the region plays. Using multiple layers with different velocities, you can create an instrument that responds to various MIDI note velocities with different sounds. You can also set overlapping velocity ranges on regions in different layers, to play multiple waves when a note is played.

  • Note Overlap Allowed

    Select this check box to allow multiple notes of the same pitch to play. Some instruments, such as those whose notes sound for a long time, can monopolize system resources if the synthesizer plays repeated notes for the instrument. For such instruments, clear the Note Overlap Allowed option so the synthesizer stops the first note if it receives a second note-on message for this note.

  • Use Instrument Articulation

    If this check box is selected, the region uses the default instrument articulation.

  • Key Group

    Assign the instrument to one of four key groups, or to No Group. Waves in the same key group never play together. For example, if an instrument is simulating a conventional drum set, the open and closed hi-hat cymbal sounds should never occur together. Assigning the two waves to different regions and making both regions members of the same key group enforces this restriction.

    If the software synthesizer is playing a note from a region in a key group and receives a Note On message from another region in the same key group, it turns off the current note and plays the new one.

    If the wave associated with this region can be played with any other wave, select No Group.

See Also

  • Region Properties


Region Properties

The Properties Window for a region in a DLS instrument has two tabs:

  • Region
  • Sample/Playback

The Region tab is shown in the following figure.

Region Properties Region tab

For each setting, select the check box to override the default value.

The Region tab has the settings shown in the following table.

Setting | Description
Phrase Group ID | Group number for waves that play with samples synchronized.
Master | All waves within the same group are synchronized to the wave that has this check box selected.
Multichannel | Select this check box if the wave is a stereo wave or part of a multichannel setup. If it is a stereo wave, Stereo is the only choice in the drop-down list. Otherwise, select a channel for the wave. Because the Microsoft Synthesizer does not support multichannel output, selecting anything other than Left (or Mono) or Right for a mono wave causes the region to play silently.
Attenuation | Volume of the wave, expressed as attenuation in decibels.
Fine Tune | Adjustment of the pitch of the wave, in semitones. When the root note is played, the original pitch of the wave is modified by this value.
Root Note | Note at which the wave is played at its original pitch, if the Fine Tune value is 0. This value can also be set in the DLS Designer Window. See Region Settings for more information.

Note To restore the default settings for Attenuation or Fine Tune, click on the slider while pressing CTRL.

The Sample/Playback tab has the settings shown in the following figure.

Region Properties Sample/Playback tab

Select the Override Wave Settings check box to apply the other settings on the tab to this instance of the wave. Deselect to reapply the default settings of the wave.

For information on the other settings, see Wave Component Properties.


Articulation Settings

The waves associated with instrument regions might not sound truly musical in their raw form, where they are usually just sustained tones. Real instruments produce complex notes with variable amplitude, pitch, and other characteristics. For example, a tone on a xylophone starts suddenly, and quickly fades, but a guitar tone starts with less velocity and takes much longer to fade before it is released.

Using DirectMusic Producer, you can configure the characteristics of how an instrument produces its tone by defining articulation settings. You can define a default articulation for each instrument, and you can also define articulations for one or more regions within an instrument. For information on how to create articulations for instruments and regions, see Managing DLS Collections.

Select one of the five buttons in the Instrument Articulation or Region Articulation area of the DLS Designer window to display settings for one of the following tone characteristics:

  • Volume
  • Pitch
  • Mod Low Frequency Oscillator
  • Vib Low Frequency Oscillator
  • Filter

Select the DLS1 check box to display only settings that are supported by DLS Level 1.

Note Changes made to the articulation are stored in the currently selected articulation in the project tree.

The following figure shows the window as it appears when the Volume button is selected.

Articulation settings can easily be duplicated from one instrument or region to another. To copy settings, right-click anywhere in the Instrument Articulation or Region Articulation area, except in a text box, and click Copy on the shortcut menu. Open the DLS Designer window for the destination instrument, display the shortcut menu in the same way, and click Paste.

Note To restore the default settings for any of the sliders, click on the slider while pressing CTRL.


Volume

Volume articulation, sometimes called an envelope, is critical to the character of the instrument. A xylophone's waveform, for example, must have a rapid attack, no sustain, and a short release to simulate the sound of a hard mallet striking a wooden bar. A bowed string instrument, on the other hand, can achieve a variety of attacks and releases.

The following figure shows the volume articulation for a DLS Level 2 instrument, as displayed in the DLS Designer Window when the Volume or Pitch button is selected. The graph represents the volume or pitch over time. Each segment corresponds to a setting in the text boxes, and changes can be made either in the text boxes or by dragging the colored squares. Note that the time scale is not linear.

The following segments make up a DLS2 volume articulation. If the DLS1 check box is selected, the Delay and Hold segments are not used and cannot be adjusted.

Setting | Range | Notes
Delay | .001 to 40 | Duration of silence before the attack begins.
Attack | .001 to 40 | A short attack time gives a note a percussive beginning, and a long attack provides a fade-in effect. The attack always ends at the maximum volume of the wave.
Hold | .001 to 40 | Duration of the maximum amplitude.
Decay | .001 to 40 | The value in the text box is the time the volume would take to reach zero. The time to reach the sustain level is shown in the gray box.
Sustain | 0 to 100 | Percentage of the maximum amplitude reached by the attack, at which the note is sustained. The length of the sustain segment in the graph is irrelevant, as the duration is ultimately determined by the length of the note.
Release | .001 to 40 | A short release time causes the note to sound chopped-off, while a long release time produces a fading effect. The value in the text box represents the time that would be required to reach silence if the sustain level were 100 percent. The time needed to go from the current sustain level is always less than or equal to that value, and is shown in the gray box.

The sliders in the Instrument Articulation area are used for the following settings:

  • Shutdown Time

    Duration of the release segment when a note-exclusive or key-exclusive event occurs.

  • Vel to Attack

    This value is a multiplier that DirectMusic Producer uses to enhance the attack speed and volume of the tone. Move the slider to the right to simulate the effect of a note being struck harder.

  • Key to Hold

    This value is a multiplier that DirectMusic Producer uses to modify the hold duration according to the pitch. Lower-pitched notes hold longer than higher-pitched ones. The farther to the right the slider is, the more pronounced is this effect.

  • Key to Decay

    This value is a multiplier that DirectMusic Producer uses to modify the decay duration according to the pitch. Lower-pitched notes decay less quickly than higher-pitched ones. The farther to the right the slider is, the more pronounced is this effect.

  • Pan

    Move the Pan slider to specify left and right balance for stereo output. Values are expressed as a percentage ranging from L50% (moved completely to the left) to R50% (moved completely to the right), with Mid being the center setting.


Pitch

Pitch articulation settings are made in the DLS Designer Window when the Pitch button is selected.

The pitch articulation defines the pitch of the tone in relation to the note being played, here called the target note. In the graphical interface, the target note is at the bottom of the graph, and the pitch of the note plus or minus the value set by the Range slider is at the top. Points in the graph can be either higher or lower in pitch than the target note, depending on whether the Range setting is positive or negative.

The following segments make up a DLS2 pitch articulation. If the DLS1 check box is selected in the Instrument Articulation or Region Articulation area, the Delay and Hold segments are not available. For more information about the graphical interface, see Volume.

Setting | Range | Notes
Delay | .001 to 40 | Duration of tone before the attack begins.
Attack | .001 to 40 | Time it takes to reach the maximum or minimum pitch.
Hold | .001 to 40 | Duration of the maximum or minimum pitch.
Decay | .001 to 40 | The value in the text box is the time that would be required to reach the target note. The time to reach the sustain level is shown in the gray box.
Sustain | 0 to 100 | Pitch at which the note is sustained, expressed as a percentage of the range. A value of 0 is the target note.
Release | .001 to 40 | The value in the text box is the time that would be required to reach the target note if the sustain level were 100 percent. The time needed to go from the current sustain level is shown in the gray box.

Typically, you would use pitch articulation to define an approach to the target note from a higher or lower note. Because the attack segment starts at the target note, you would set the attack and hold durations to the minimum value and then use the decay segment to bend the pitch to a sustain value of 0 percent.

The sliders in the Instrument Articulation or Region Articulation area are used for the following settings:

  • Vel to Attack

    This value is a multiplier that DirectMusic Producer uses to modify the attack speed. Move the slider to the right to simulate the effect of a note being struck harder.

  • Key to Decay

    This value is a multiplier that DirectMusic Producer uses to modify the decay duration according to the pitch. Lower-pitched notes decay less quickly than higher-pitched ones. The farther to the right the slider is, the more pronounced is this effect.

  • Key to Hold

    This value is a multiplier that DirectMusic Producer uses to modify the hold duration according to the pitch. Lower-pitched notes hold longer than higher-pitched ones. The farther to the right the slider is, the more pronounced is this effect

  • Range

    Difference between the target note and the pitch reached by the attack, in semitones. For example, a range setting of 5 causes the note to ascend five semitones above its normal value during the attack segment.


Mod Low Frequency Oscillator

The Mod low frequency oscillator (LFO) is used to periodically vary the pitch and amplitude of the waveform to produce vibrato and tremolo. Effective use of the LFO provides an extra dimension of interest to what is otherwise a constant tone.

The following settings are available in the Instrument Articulation or Region Articulation area of the DLS Designer Window when the Mod LFO button is selected:

  • Frequency

    Move the Frequency slider to set the cycles per second at which you want the pitch and/or amplitude to modulate.

  • Delay

    Move the Delay slider to set the length of time to pass before modulation begins.

  • Volume Range

    Move the Vol Range slider to set the degree to which the amplitude of the wave is modulated.

  • Pitch Range

    Move the Pitch Range slider to set the degree to which the frequency of the wave is modulated.

  • MW to Volume

    Effect of mod wheel on volume. The value set by the MW to Vol slider indicates the MIDI mod wheel message to translate to tremolo, using the values for Frequency and Delay. If you set this value to zero, MIDI mod wheel messages do not generate tremolo.

  • MW to Pitch

    Effect of mod wheel on pitch. The value set by the MW to Pitch slider indicates the MIDI mod wheel message to translate to vibrato, using the values for Frequency and Delay. If you set this value to zero, MIDI mod wheel messages do not generate vibrato.

  • Chan. Press. to Gain

    Effect of channel pressure (mono after touch) on volume.

  • Chan. Press. to Pitch

    Effect of channel pressure on pitch.

  • Chan. Press. to Fc

    Effect of channel pressure on filter cutoff.


Vib Low Frequency Oscillator

The Vib low frequency oscillator (LFO) is used to periodically vary only the pitch of the waveform to produce vibrato and tremolo. Effective use of the LFO provides an extra dimension of interest to what is otherwise a constant tone.

The following settings are available in the Instrument Articulation area of the DLS Designer Window when the Vib LFO button is selected:

  • Frequency

    Cycles per second at which you want the pitch and/or amplitude to modulate.

  • Delay

    Length of time to pass before modulation begins.

  • Pitch Range

    Degree to which the frequency of the wave is modulated.

  • Chan. Press. to Pitch

    Effect of channel pressure on pitch.

  • MW to Pitch

    Effect of mod wheel on pitch. The value set by the MW to Pitch slider indicates the MIDI mod wheel message to translate to vibrato, using the values for Frequency and Delay. If you set this value to zero, MIDI mod wheel messages do not generate vibrato.


Filter

The following settings are available in the Instrument Articulation area of the DLS Designer Window when the Filter button is selected:

  • Enable Filter

    Select to enable filtering.

  • Initial Fc

    Initial filter cutoff frequency.

  • Resonance

    Intensity of the filter frequency that is emphasized.

  • Mod LFO to Fc

    Effect of the modulation low frequency oscillator on filter cutoff.

  • Mod LFO CC1 to Fc

    Effect of the modulation low frequency oscillator on filter cutoff. The filter is modulated by CC1 (mod wheel) rather than the articulation LFO.

  • Pitch Envelope to Fc

    Effect of the pitch envelope on filter cutoff. You can choose whether or not to affect pitch with this. By default, the pitch amount is set to 0.

  • Key Velocity to Fc

    Effect of key velocity on filter cutoff.

  • Key Number to Fc

    Effect of key number (pitch) of the playing note on filter cutoff.


Wave Editor

Microsoft DirectMusic Producer supports both 8-bit and 16-bit PCM mono and stereo wave files, which you can open and edit using Wave Editor. Wave Editor is not a full-featured tool for editing all characteristics of a wave sample, but it enables you to do the following:

  • Define the portion of the wave that plays when it is used as a repeating or looped sound. See Setting Loop Points.
  • Zoom in to view the wave in detail.
  • Cut, copy, and paste waveform material. See Cutting and Pasting Portions of a Wave.
  • Create simple fades. See Creating Fades.
  • Add silent periods to waves. See Inserting Silence.
  • Convert the wave format to a lower sample rate. See Resampling.

The Wave Editor window, shown in the following figure, can be opened in two ways:

  • Double-click a wave's icon in the project tree.
  • Click the Edit button in the DLS Designer Window to open the wave in the selected region.

Wave Editor window

Note If looping is not enabled for the wave, the loop start and loop end are shown as broken lines.

When the Wave Editor window is open, you can audition the wave by using the Transport Controls. You can also start and stop the wave by pressing SPACEBAR.


Setting Loop Points

The looping portion of a wave can be repeated one or more times during playback, either when the wave is playing in a Wave Track or when it is being used by a DLS instrument. By default, the looping portion is the entire wave. Wave Editor enables you to set the start and end loop points to different locations.

Although they always have loop points, waves are not necessarily looped. Looping depends on the settings for the usage of the wave, as set in the Wave Component Properties, Wave Properties, or Region Properties, or by a DirectMusic application playing the wave as a segment.

You can use two methods to set loop points:

  • Set numeric values in the Wave Tab of the Wave Component Properties window.
  • In Wave Editor, drag the mouse over the wave to select a portion of the wave. Right-click the selected region and choose Set Loop From Selection on the shortcut menu. The green start line and blue end line move to the outside edges of the region. By default, they snap to the nearest point where the wave is at zero amplitude.

After establishing a looping section, you can define a different end point by selecting a region within which you want the end point to fall and then clicking Find Best Loop End From Selection on the shortcut menu.


Creating Fades

Although Wave Editor does not include extensive capabilities for modifying waveforms, it does enable you to create simple fades.

To create a fade-in or fade-out in a wave, select a portion of the wave by dragging the mouse. Right-click and select Fade on the shortcut menu, then select In or Out.


Inserting Silence

To insert silence at the cursor position, either select Insert Silence on the shortcut menu, or press the INS key. The Insert Silence dialog box is shown. You can set the duration of silence either as a time or as a number of samples. Changes to one are reflected in the other when you tab out of a text box.


Resampling

By using the Resample command on the shortcut menu, you can reduce the sample rate of a wave, to reduce the storage and streaming resources required to play the wave. Enter a new value for the sampling rate in the Resample Wave dialog box. If, after auditioning the wave at the new sample rate, you decide the loss of quality is unacceptable, revert to the previous format by using the Undo command.


Cutting and Pasting Portions of a Wave

A selected region of a wave can be cut or copied to the Clipboard, or deleted. When you cut or delete, the selected portion of the wave is removed and the wave to the right of the cut portion moves left to close any gap. Selections can be pasted from the Clipboard to the same wave or a different wave.

To select a portion of the wave, drag the mouse across it. The selected region is displayed in red, as shown in the following figure.

Selection in Wave Editor

You can make fine adjustments to the selection by using the Wave Component Properties window.

Use the standard Clipboard shortcuts CTRL+X and CTRL+C, or right-click the selection and click Cut or Copy on the shortcut menu.

To paste from the Clipboard, click on the wave to put the red insertion marker at the destination. Press CTRL+V, or right-click and select Paste on the shortcut menu. Existing wave material to the right of the insertion point is moved to the right. No existing material is replaced or deleted when you paste material, even if a portion of the wave is selected.

The following commands for working with selected material are also available on the shortcut menu:

  • Snap to Zero

    When this option is selected, as it is by default, the insertion point and the beginning and ending of the selection are automatically adjusted to the nearest point where the amplitude of the waveform is zero. This ensures a clean connection when material is removed or inserted.

    Note The setting you choose in any wave applies to all open waves.

  • Select All

    Select the entire wave.

  • Clone Loop

    Copy the looped portion of the wave to the end point of the loop. The looped portion expands to include the copy; however, subsequent Clone Loop commands copy only the original portion.

  • Delete

    Delete the selection but do not copy it to the Clipboard.

See Also

  • Setting Loop Points


Stereo Waves

DirectMusic Producer supports the use of both mono and stereo wave files. You can insert both types of waves into the project tree, and open them with Wave Editor, or drag them into the Waves folder of a DLS collection for use when designing DLS instruments. You can also insert both types of waves into the Wave Track of a segment.

The icon of the wave shows whether it is mono or stereo. The following figure shows a DLS collection containing the icons of four mono waves and one stereo wave, Bright Trumpet2.

Mono and stereo waves

When you open a stereo wave in Wave Editor, both the left and right channels of the wave are displayed in the editing window. The following figure shows the Bright Trumpet2 stereo wave, with the left channel on top.

Stereo wave in Wave Editor

Stereo waves are edited just as if they were a single wave. You cannot edit the two channels independently.

DLS Designer divides stereo waves into two separate waveforms for the left and right channels. For example, a stereo wave in the Waves folder of an instrument called "Applause" is available for selection in a region as either the stereo version, "Applause", or as either of the channels, "Applause (Left)" and "Applause (Right)".

Because multiple layers are supported only by DLS Level 2 synthesizers, only a single channel is heard when the instrument is played on a DLS1 synthesizer. To support both levels of synthesizer, place a mono version of the wave in the bottom layer and the stereo version in another layer. Use conditions to play the first layer only on DLS1 and the next two layers only on DLS2. For more information, see Conditional Regions and Articulations.


Wave Component Properties

The Properties Window of a wave in the project tree, either a separate component or in the Waves folder of DLS collections, can be opened from the shortcut menu for the Wave Editor window, or by selecting a wave component in the project tree and pressing F11.

Note To view this Properties window for a separate wave component in a .wvp file, you must select the second-level icon in the project tree, not the .wvp icon.

The Wave Component properties are not the same as the Wave Properties for a reference to a wave in a Wave Track.

When editing and designing a DLS instrument, you can override the settings in the Wave Properties window for the wave used in the DLS instrument. This affects the use of the wave only in a selected region of the DLS instrument. For more information, see Region Properties.

The wave component properties window has three tabs:

  • Wave Tab

    Settings for playback.

  • Info Tab

    Descriptive information. See Wave Properties Info Tab.

  • Compression/Streaming Tab

    Compression and streaming options.


Wave Tab

The Wave tab of the Wave Component Properties window is shown in the following figure.

Wave Component Properties Wave tab

The tab contains the following settings:

  • Attenuation

    Default volume of the wave, expressed as decibels of attenuation. A value of 0 is full volume.

  • Fine Tune

    Adjustment of the pitch of the wave, in semitones.

    Note To restore the default settings for Attenuation or Fine Tune, click on the slider while pressing CTRL.

  • Root Note

    Note at which the wave is played at its original pitch, as modified by Fine Tune. For example, if a waveform was originally sampled from a flute playing middle C, enter C5 as the root note for the waveform. For information about pitch names and their corresponding MIDI values, see Pitch Names and MIDI Numbers.

    The root note setting is automatically inserted in the Root Note box of the Region Properties when the wave is assigned to a region in DLS Designer.

    This value has no effect on the playback of the wave in a wave track.

  • Sample Length

    Number of samples in the waveform, or in one channel of a stereo wave. This value is read-only.

  • Loop

    If this check box is selected, the wave loops when played. This is the default value but can be overridden in the Region Properties and Wave Properties windows.

  • Forward

    If this option is selected, the release segment of a region's articulation is played immediately when a note-off message is received, regardless of the position of the play cursor in the looping portion. The looping portion continues to play until the release segment is completed. This setting has no effect on waves in tracks.

  • Loop and Release

    If this option is selected, the release segment of a region's articulation is not played until the looping portion has finished playing. This setting has no effect on waves in tracks.

  • Start, End, and Length

    The top row of boxes contains the loop points and length of the looping portion, in samples. The second row contains the dimensions of the selected area in Wave Editor and can be used to make fine adjustments to the selection for editing purposes.

    Changing the End value also changes the Length value, and changing Length changes End. However, if the Lock check box is selected, the Length value is fixed, and any change to Start or End adjusts both the Start and the End values.

  • Allow Sample Truncation

    If this check box is selected, the synthesizer may truncate the wave data to its own format after loading the wave into memory. For example, if a synthesizer is low on system resources, it can use this option to save memory by playing the waveform at an 8-bit resolution. Truncating the sample may result in loss of sound quality.

    This type of data reduction is rarely used, and the Microsoft Synthesizer disregards this setting.

  • Allow Sample Compression

    If this check box is selected, data compression is allowed after the wave is loaded into memory.

    This type of data reduction is rarely used, and the Microsoft Synthesizer disregards this setting.

    It is not necessary to select this check box before using the data compression options on the Compression/Streaming Tab.


Wave Properties Info Tab

The Info tab of the Wave Component Properties window is shown in the following figure.

Wave Component Properties Info tab

The tab contains descriptive data similar to that on the generic Info Tab of some other Properties windows. In addition, it contains the following information, which cannot be edited:

  • Sample rate

    Samples per second. You can change this value by using the Resample command on the context menu for the wave.

  • Sample size

    The size of each sample, in bits.

  • Length

    Number of samples in the waveform, or in one channel of a stereo wave. You can change this value by editing the wave in the Wave Editor window. You may need to close and reopen the Info tab to see changes appear in the tab.


Compression/Streaming Tab

The Compression/Streaming tab of the Wave Component Properties window is shown in the following figure.

Wave Component Properties Compression/Streaming tab

The tab has the following settings:

  • Compressed

    If selected, the wave is compressed using the format selected in the Type and Attributes lists. This check box cannot be selected unless a valid format has already been selected. Deselect the check box to restore the wave to its original, uncompressed size.

  • Type

    Compression type. The choices in the drop-down list depend on what codecs (compression/decompression algorithms) are installed on the computer. DirectMusic Producer does not install the codecs that you see in the list. The codec you choose must also be available on the system that plays the file, so that DirectMusic can decompress the wave.

    Note If you use Windows Media Audio (WMA) compression, append the sample with blank space at the end. Otherwise the sample can be truncated.

    WMA compression is available only for waves in DLS collections.

  • Attributes

    Format of the compressed data, specifying samples per second, bits per sample, and number of channels. The formats shown are those supported by the codec selected in the Type drop-down list. Some codecs do not allow you to specify a different format than the original. If you are using stereo waves in a DLS collection, the mono conversion formats shown apply to each channel individually. If a stereo wave is outside of a DLS collection, only stereo formats are available.

  • File Size

    Current size of the wave, in bytes.

  • Compression Ratio

    Ratio of the compressed size to the uncompressed size.

  • Decompressed Start

    Not implemented.

  • Streaming

    If selected, the wave is downloaded to the synthesizer in chunks, as needed, rather than all at once.

  • Don't Pre-roll

    Do not prepare any data for playback when the wave is downloaded. Check this box to save memory resources when a large number of waves are being downloaded.

  • Read Ahead

    Size of chunks to be downloaded when the wave is streaming, in milliseconds. This value should be set to at least 500. Setting the time to something less than 500 ms will result in a beat of silence when either the end of a segment loop falls within the streaming wave portion, or the segment transitions to itself within the streaming wave.


Chordmap Designer

A chordmap is a collection of chords that provides multiple potential chord progressions to a musical piece. Chord progressions are generated from a chordmap and inserted into the Chord Track of a segment, either at design time or at run time.

By using chordmaps, you can create different segments from a common set of chords. You can also design segments that are able to play with different chord progressions each time they play. For more information, see Using Chordmaps with Segments.

The chords in a chordmap and the underlying scales for those chords are designed to evoke a particular tonality, an emotional mood, or a set of related keys. You can design chordmaps with as much or as little detail and complexity as you choose. Because chordmaps are extensible, you can create a simple chordmap, begin using it, and later add more chords and chord paths without losing the music content you have already created.

The chords in a chordmap are organized sequentially, with each chord leading to one or more other chords. The following illustration shows a chordmap containing numerous chord paths.

Chordmaps add great variability to music because there are many paths to choose from as a piece moves toward a destination chord. Each time a new chord progression is generated, parameters for beginning and end chords, and for phrase length, are taken into account, and suitable paths from one chord to another are selected. If more than one path is possible, a suitable path is selected at random.

The Help for Chordmap Designer is organized into three broad areas:

Overview

  • Using Chordmaps with Segments
  • Chord Names
  • Chord Paths
  • Beginning and End Signpost Pairs
  • How Chord Composition Works

Using the Interface

  • Chordmap Properties
  • Signpost List
  • Chord Path Window
  • Chord Palette

Miscellaneous Topics

  • Maintaining Chord Consistency
  • Segment Key Changes and Chordmaps

For information on how to create and manage chordmaps in the project tree, see Managing Components.


Using Chordmaps with Segments

Once designed, a chordmap is always used in conjunction with a segment to compose chord progressions. A single chordmap is placed in the Chordmap Track.

You can make use of chordmaps in any of the following ways:

  • Temporarily draw on chordmap material as you design a segment, using the Compose Chords Button to insert chords in the Chord Track. This helps you quickly arrive at suitable chord progressions for the segment. After you generate a chord progression that is particularly effective, you can remove the chordmap and signposts from the segment.

    The following figure shows a segment set up for use in this way.

    Chord composition in a segment

  • Set flags in the Signpost Track Properties so that each time the segment is played, it draws on the chordmap to generate a new chord progression.
  • Use the Segment.Recompose command in a script to generate a new chord progression.
  • Allow application developers to decide when to recompose the chord progression by using the DirectMusic application programming interface.
  • Supply a separate chordmap file to application developers so they can use it at run time to create new segments or change the chords in existing segments.

To use a chordmap, a segment must have a Signpost Track containing markers that specify where signpost chords are to be inserted. The signpost track must contain at least one marker. In Segment Designer, this track also contains the Compose Chords button.

Before you can use the Compose Chords button, a segment must also have either a Style Track containing a style in the first measure, or a Pattern Track. If you don't want to save this track with the run-time segment, specify the Audition (Design) Only option on the Flags Tab of the track Properties window.

If the segment does not contain a Chord Track, one is automatically added when you click the Compose Chords button, or when an application composes the segment.

Note Beginning with the Microsoft DirectX 8.0 release of Microsoft DirectMusic Producer, a segment that contains a signpost track and a chordmap track is the functional equivalent of a template file. You no longer have the option of creating a new template file in the project tree. Instead, you create a segment containing signpost and chordmap tracks, and use it in the same way as a template. You can open and use any template files created with earlier versions of DirectMusic Producer, but the Properties window of a template no longer contains a Template tab.


Chord Names

The name of a chord in Chordmap Designer is in the form 2CM, where each element indicates one of the following properties of the chord, from left to right:

  • Its octave placement on the piano keyboard. The number 2 is the equivalent of the octave beginning at middle C and continuing upward through B. For more information, see Pitch Names and MIDI Numbers.
  • Its root; in this case, C.
  • Its chord quality; in this case, M for major.


Chord Paths

When a segment draws chords from a chordmap, it selects chords from the Signpost List and inserts them wherever a signpost marker occurs. Signpost chords do not have to be in the Chord Path Window to be eligible for selection. However, to add interest to the music, you can create chord paths leading from one signpost to another.

Chord paths are generally from three to six chords in length. A chord path proceeds from a beginning signpost chord to an end signpost chord, and passes through any number of connection chords.

The following figure shows a simple chord path with a 2CM beginning signpost, followed by 2Fm and 1A7 connection chords, and leading to a 2DM end signpost.

Simple chord path

Beginning signposts and connection chords can have multiple paths leading from them, so that a chord can belong to several different paths, as shown in the following figure.

Complex chord path

It is not necessary for every path to include a chord at every beat where a chord is available. For example, in the preceding figure there could be a direct connection between the 2Fm chord and one or both end signposts, bypassing the 1A7 and 2B7 chords.

Chord paths always include at least two signpost markers, and can include more. For more information, see the following topics:

  • Beginning and End Signpost Pairs
  • Linear Chordmaps


Beginning and End Signpost Pairs

Beginning and end signposts are generally placed in the chordmap in matching pairs. The reason is that they are really the same signpost; the end of one chord path is the first chord of the next. By placing a certain chord at the end of a path, you specify that the path leads into a new path beginning with that chord. If an end signpost has no matching beginning signpost, no new path can be found after the end signpost is reached. If a beginning signpost has no matching end signpost, no path will ever lead to it.

For more information on the properties two chords must share to be considered matching signposts, see Maintaining Chord Consistency.

The following figure shows how end signposts point to matching beginning signposts.

Matching signpost chords

In the previous figure, if a path leading from the 2CM beginning signpost to the 2GM signpost were used to compose the first five measures, the next path selected would begin with the 2GM beginning signpost. If that path then proceeded through 2Ab7 or 2Gb7 to 2FM, the chord placed at the next group marker would be 2FM. Because no paths lead from 2FM, that chord would play until the next marker was reached.


How Chord Composition Works

A chordmap in the Chordmap Track of a segment is used in conjunction with markers in the Signpost Track to compose a chord progression in the Chord Track.

The selection of chords is based on the primary chords that are contained in the Signpost List of the chordmap. After suitable signpost chords are selected, they are inserted in the chord track. If the signposts are accompanied by chord paths, the chord paths are also inserted in the segment, so that a series of signposts and their chord paths are strung together in a long chord progression. If no chord paths can fit into a part of the segment—for example, if all chord paths are too long—then only a signpost chord is selected and inserted.

Each signpost chord must be assigned to at least one signpost group. Markers in the signpost track specify which signpost group is used at each point in the segment.

The composition mechanism goes through the following basic steps to select chords:

  1. A chord from the Signpost list that belongs to the group specified by the first marker is placed at the position of that marker—normally on the first beat of the segment.
  2. If any suitable chord paths are available, one is selected and its chords are placed at intervals defined in the chordmap. A chord path is considered suitable if all the following are true:
    • It can exactly fill the space before the next marker. Some flexibility in the length of the chord path is possible; see Fixed and Variable Connection Lengths.
    • Its beginning signpost is the chord that was placed at the first marker.
    • Its end signpost belongs to the group specified by the second marker.

    If no suitable chord path is found, no chords are entered until the next marker is reached.

  3. The end signpost of the path is placed at the second marker. If no end signpost is available because no chord path was selected in step 2, a signpost chord from the correct group is selected from the Signpost list and placed at the marker.
  4. The chord placed at the second marker is used as a beginning signpost, and the process resumes at step 2.

If there are multiple potential chord paths to choose from in step 2, one is chosen at random. However, the selection of chord paths is affected by other factors, such as the weight assigned to different connections, and the activity level. For more information, see the following topics:

  • Connection Properties
  • Signpost Track Properties

The following topics show examples of the chord composition process:

  • Chord Composition Example: Placement of a Single Chord Path
  • Chord Composition Example: Unmatched Signpost Chords


Chord Composition Example: Placement of a Single Chord Path

The following figure shows the relationship between where chords are positioned in a chord path window and the measures of a segment in which the chords are inserted. In the figure, the segment is positioned below the Chord Path Window to align the measures in both components.

In this figure, the Signpost list uses chords from signpost groups 1 and 2. The Chord Path window has signpost chords in measures 1 and 5. The window also contains a pair of chord paths that begin at a 2CM signpost chord, pass through 2GM or 2E7, and end with 2Am or 2FM. The chords drawn from the chordmap have been inserted in measures 1 through 5 of the Chord Track.

The Signpost Track in the segment contains a group 1 marker in the first measure and a group 2 marker in the fifth measure. Because 2CM is in signpost group 1 of the Signpost list, it is inserted in measure 1 of the segment chord track. Also, because 2Am and 2FM are in signpost group 2 of the Signpost List, one of them is selected and inserted in measure 5 of the segment chord track. Either chord in the middle of the chordmap (2GM or 2E7) can fill the chord progression between signpost chords. Because there is a four-measure space between the signposts in the segment, the four-measure phrases in the chordmap fit well in the segment.


Chord Composition Example: Unmatched Signpost Chords

The following figure shows a chordmap containing two unmatched signpost chords: a 2CM beginning signpost belonging to groups 1 and 2, and a 2DM end signpost belonging to groups 1 and 3. The chordmap also contains a matched pair of 2EM signposts belonging to groups 1 and 4. Below the chordmap in the figure is a segment in which the Chord Track has been composed from the chordmap, using group markers in the Signpost Track at measures 1, 5, 9, 13, 17, and 21.

Chord composition from matched and unmatched signposts

The following conditions apply each time the segment's chords are composed:

  • 2CM can occur at group markers 1 and 2, but is always preceded by a signpost chord only, without connection chords. This is because no chord path ends in 2CM.
  • 2DM can occur in the segment at signposts 1 and 3 and is never followed by connection chords.
  • 2EM can occur in the segment at signposts 1 and 4 and is followed by connection chords only when leading to a 2DM signpost chord or another 2EM signpost chord.
  • 2CM can be followed by connection chords only when leading to a 2DM or 2EM signpost chord, but not when leading to another 2CM signpost.


Chordmap Properties

Though you can change chordmap properties at any time, it is recommended that you set the basic properties of a new chordmap before inserting chords and other elements.

The Properties Window for a chordmap in the project tree contains the following tabs:

  • Chordmap Tab

    Contains most of the major settings for the chordmap properties.

  • Underlying Scale Tab

    Contains the scale used for the seven chord root tones that are primary to the chordmap, and used to create a custom chord palette.

  • Audition Tab

    Contains settings for testing playback of the chordmap in combination with a style component.

  • Info Tab

    Contains generic descriptive information about the component.


Chordmap Tab

The Chordmap tab of the Chordmap Properties window is shown in the following figure.

Chordmap Properteis Chordmap Tab

The tab contains the following settings:

  • Name

    Name that appears in the project tree next to the internal icon of the file.

  • Length

    Button that you click to set the number of measures in the chordmap. This value should be equal to the length of the longest chord path you expect to create.

  • Description

    Internal description of the chordmap. Unlike the descriptive information on the Info Tab, this is not saved with the run-time file.

  • Edit Mode

    Flexibility in the duration of chords. When the Fixed option is used, each chord plays for a specific number of beats, according to its position in the map relative to the timeline. When the Variable option is selected, chords play over a range of beats. For more information, see Fixed and Variable Connection Lengths.

  • Time Signature

    Beats per measure, and the value of a note given a beat.

  • Key

    Key used when composing the chordmap.

    It is recommended that you leave the chordmap key at the default setting of 2C. Choosing a key other than 2C causes chords in the Chordmap Designer Window or Signpost List to move accordingly. The roots of all chords in the chordmap and Signpost list are transposed, which also transposes the scale and chord structure settings in the Chord Properties of each chord.

    For example, if you create a chordmap in the key of 2C, placing a G major chord in the chordmap, and change the chordmap key to Eb, the G major chord is transposed to Bb major, including its scale and chord structure.

    Changing the key of a chordmap also affects its use with segments. When you use a segment's Compose Chords command to draw chord paths from a chordmap, the key of the chordmap is noted and chords are inserted in the segment with the same root values they have in the chordmap. Thus, the Bb major chord in the transposed version of the chordmap is copied into the segment as a Bb chord.

    Note If you change the key of a segment—for example, from C to D—chords in the segment are moved, but the chordmap ignores the segment's key. The next use of the Compose Chords command inserts chords from the chordmap using their current root values.

    Changing the key of a chordmap also transposes the underlying scale for the chordmap. The pitches of the underlying scale are altered so the original scale structure is retained relative to the new key. For example, if a chordmap has a key of C and an underlying scale of C harmonic minor, changing the key to Eb results in the underlying scale transposing to Eb harmonic minor. In addition, such a change can affect the chord palette.


Underlying Scale Tab

The Underlying Scale tab of the Chordmap Properties window, shown in the following figure, contains settings for the chords that are considered primary to the chordmap. Scale tones in the Properties window are shown in red, and nonscale tones remain black or white.

Chordmap Properties Underlying Scale tab

The underlying scale of a chordmap serves two important purposes:

  • It provides pitches that quickly generate a chord palette using chords that are diatonic to the underlying scale.
  • It identifies the seven pitches that are the primary chord roots in the chordmap.

You can choose any seven tones for the underlying scale. It is recommended that the underlying scale be based on a tonic of C. This simplifies building and testing the chords of the chordmap. However, you can build the scale using any pitch as the tonic and using any tonality, so long as the underlying scale has only seven tones.

Note Nothing in the Underlying Scale tab identifies the tonic note of the underlying scale. Nor does anything in the chord palette identify which chord is the tonic. In the preceding figure, you can consider the underlying scale to be C major, A minor, or any of the seven modes based on the same pitches. However, each chordmap has a key setting that affects the underlying scale. It is recommended that you leave the chordmap's key at the default setting of 2C.

The Major, Har Minor, and Mel Minor buttons provide options for automatically entering a major, harmonic minor, or ascending melodic minor scale based on a tonic pitch of C. These buttons enter the seven tones of a scale in the lower half of a scale and duplicate them in the upper half. Click the Clear Scale button to delete all tones from the scale. Click the left or right Chrom Shift button to move all notes in the scale up or down by a half step. See Chromatic Shift.

After you enter an underlying scale, use the Chord Palette command to generate a new palette containing chords that are diatonic to the underlying scale. For more information, see Using the Chord Palette Command to Create a New Palette.


To enter an underlying scale

  1. In the Underlying Scale tab, click the Major, Har Minor, or Mel Minor button. The scale is entered in the lower half of the keyboard and duplicated in the upper half. The C harmonic minor is shown in the following figure.

    C harmonic minor

    - or -

    In the Scale area, click the desired tones in the lower half of the keyboard to add them to the scale, as shown in the following figure.

    Tones added by clicking keys

    Note You must select seven pitches. If you select more or less than seven pitches, DirectMusic Producer warns you when you close the Properties window that you must correct the scale.

  2. To move the scale up or down on the keyboard, click the left or right Chrom Shift button. See Chromatic Shift.
  3. Click the button marked 1->2 to duplicate the lower half of the scale in the upper half. This ensures consistent behavior of the scale.


Chromatic Shift

You can use a preset scale based on a C tonic as a starting point, and click the left or right Chrom Shift button to move the preset scale up or down the keyboard. Click the button to use a mode from a preset scale in the tonic C position.

For example, to use the C Lydian mode as the underlying scale, click the Major button, producing C major as shown in the following figure.

C Major scale

Then click the left or right Chrom Shift button until the F Lydian scale moves up or down to arrive on C in the keyboard, as shown in the following figure.

C Lydian mode


Audition Tab

The Audition tab of the Chordmap Properties window is shown in the following figure.

Chordmap Properties Audition tab

Using the Audition tab, you can temporarily choose any style in the project tree and set a groove level for testing the playback of the chordmap. As you change the chordmap, you can click the Play Button to listen to the changes and hear the same style and groove used with the chordmap. Click any chord in the editing window to hear patterns from the style play over the chord.

By default, the style listed first in the project tree of the project that the chordmap belongs to is used as an audition style for a chordmap. Groove level 50 is also used as a default setting.

See Also

  • Groove Ranges


Chordmap Designer Window

Open a chordmap in the Chordmap Designer window by double-clicking the chordmap's component icon in the project tree.

The following figure shows the components of the Chordmap Designer window.

Chordmap Designer Window

The window consists of the following main elements:

  • Signpost List

    Signpost chords are the primary chords that define the structure of a chordmap. A chord must be in the Signpost list in order for DirectMusic Producer to recognize and use it at a signpost group marker when generating new chord progressions in a segment.

  • Chord Path Window

    In this window you define all possible paths between signpost chords.

  • Chord Palette

    The chord palette is a collection of chords that can be dragged into the chord path window. It is comparable to a painter's palette. Just as the colors included in a palette affect the mood or emotional impact of a painting, the chords in the chord palette define the mood of the chordmap. You can use a custom palette containing chords you design, a palette containing chords based on a scale, or the default palette containing all major triads. The palette is for convenience only; you are not restricted to using these chords.


Signpost List

Signpost chords are the primary chordmap elements used by a segment. When chords are composed and placed in the Chord Track, a signpost chord is placed at each beat where there is a group marker in the Signpost Track. To be eligible for placement in the chord track, a chord must be in the Signpost list and be assigned to at least one signpost group.

The Signpost list has 16 columns, labeled as follows:

  • C1 and C2

    Cadence Chords.

  • SP

    Signpost chords.

  • 1 to 7 and A to F

    Signpost Groups to which each signpost chord belongs.

Columns of the Signpost list can be resized by dragging a border in the top row.

The primary elements in the Signpost list are the signpost chords listed in the SP column, as shown in the following figure.

Chords in the signpost list

The text style of the chord gives information about its status, as shown in the following table.

Text style | Status
Bold | The chord structure matches that of a signpost in the Chord Path Window.
Italic | Chord structure does not match any signpost chords in the Chord Path window. The signpost can still be selected in chord composition, but will never occur before or after connection chords.

For information on how chords are determined to be matching, see Maintaining Chord Consistency.

You can enter a chord in the Signpost list in any of the following ways:

  • In the SP column of the list, click the box labeled <new> to enter a new chord. Edit the chord as necessary.
  • Cut or copy a chord from the Chord Palette or Chord Path window. Right-click on a box in the SP column and select Paste from the shortcut menu.
  • Drag a chord from the Chord Palette to a box in the SP column.
  • Drag a chord from the Chord Path window to a box in the SP column.

To enter a chord without replacing one already in the list, drag or paste it to the box labeled <new>, as shown in the following figure:

Dragging chords to the signpost list

Dragging a chord from the chord palette or Chord Path window ensures that the chords in the Signpost list have properties matching other chords throughout the entire chordmap. For more information, see Maintaining Chord Consistency.

You can also create a new instance of a chord already in the Signpost list, by copying it to the Clipboard and then pasting it to the <new> box, or by dragging it there while pressing CTRL. You can then edit the Chord Properties of the new chord to differentiate it from the original one.

To delete a chord from the Signpost list, click it and press DELETE.


Signpost Groups

A signpost chord must be assigned to one or more signpost groups before it can be used in a segment. Each marker in the Signpost Track is linked to one signpost group. To be used at that marker, a signpost must be assigned to that group. There are 13 different signpost groups, labeled 1 to 7 and A to F.

Note There is no functional difference between groups labeled with a number and those labeled with a letter. Any chord can be placed in any group.

Click boxes in the signpost group columns to set or clear the assignment of chords to those groups.

The following figure shows several chords assigned to signpost groups 1, 2, 3, A, B, and C.

Signpost group assignments


Cadence Chords

Cadence chords are used to enhance and strengthen the arrival of a signpost chord. A cadence chord is triggered by a group marker in the Signpost Track; see Signpost Group Properties.

In the Signpost List, you can place up to two cadence chords in the C1 and C2 columns alongside a signpost chord. When a segment's chords are composed, and a signpost chord falls at a group marker that has the Precede Signpost with Cadence option selected in the Signpost Group Properties window, the cadence chords are inserted before the signpost chord.

A cadence usually begins before the expected arrival of the target signpost chord by roughly one measure, depending on the time signature. If two cadence chords precede a signpost in the Signpost list, each will typically be given a length of half a measure. When using a 3/4 time signature, cadence chords are sometimes given a full measure for each chord, or sometimes two chords are squeezed into a single measure, with the first chord on beats 1 and 2, and the second chord on beat 3.

One advantage of using cadence chords in a chordmap is that the time signatures of the chordmap and the segment do not have to match. If you create a chord path of two or three chords over an even measure, that chord path might not be selected unless its beginning and end signposts also fall on measure boundaries in the segment's time signature. However, if you create the same chord progression by using cadence chords, no chord path is necessary, and the signpost chord can be selected regardless of the time signature. For more information on the effect of the segment's time signature on the selection of chord paths, see Fixed and Variable Connection Lengths.


Chord Path Window

The Chord Path window, shown in the following figure, contains the main body of the chordmap. It is a graphic editing region in which you place chords and draw connections between them. You can edit the properties of a chord and drag chords to any position.

Chord Path window

The Chord Path window is divided into two parts:

  • A timeline showing the measures and beats of music in the chordmap. You can change the time signature in the Chordmap Properties window.

    Note This timeline enables you to specify the number of beats between chord changes, but is not otherwise related to the timeline in any segment. For example, a chord placed in measure 2 of the chordmap timeline could be placed in any measure of a segment.

  • The editing window, where you place chords and connections.

Selected chords are highlighted in red and can be edited by using the Chord Properties window. You can select multiple chords by clicking on them while pressing CTRL, or by dragging the mouse around them.

After chords are selected, you can drag any chord in the selection to drag the whole selection to a different position in the window. You can also press the DELETE key to delete the group all at one time.

Press the CTRL key and drag a group of chords to copy and paste them all at one time.

The text style of a chord in the Chord Path window gives information about its status, as shown in the following table.

Text style | Status
Bold | Signpost chord; chord structure matches that of a chord in the Signpost List.
Italic | Designated as a signpost chord, but does not match any chords in the Signpost list. The signpost will not be used.
Normal | Chord is not a signpost; it is a connection chord.


Inserting Chords in the Chord Path Window

A chord can be placed at any position in the Chord Path window, and you can insert any number of chords in the window. Chords you place in the window can be signpost chords or connection chords.

A chord can be entered in any of the following ways:

  • Drag a chord from the signpost list to the Chord Path window to enter it as a simple connection chord.
  • Drag a chord from the chord palette to the Chord Path window to enter it as a simple connection chord.
  • Right-click in the Chord Path window to insert a new, default chord in the Chord Path window.
  • Paste a chord from the Clipboard. You can copy to the Clipboard from the Signpost list, from the chord palette, or from the Chord Path window.
  • Drag a chord from the Chord Path window while pressing CTRL. A copy of the chord is made.
  • Right-click a chord in the Signpost list and then on the shortcut menu click Insert into Chordmap. This is the recommended way of inserting a pair of beginning and end signposts. For more information, see Inserting Signpost Pairs.

After entering a chord, you can convert it from a connection chord to a signpost chord, or the other way around, by using Toggle Beginning Signpost or Toggle End Signpost commands on the shortcut menu.

When you insert a new, default chord in the Chord Path window, it is displayed as follows.

New connection chord

A newly inserted chord is red, indicating that it is selected. The default new chord is 2CM. If you change the tonic chord in the palette or choose a different key for the chordmap, the default chord is different.

After you insert a chord, you can reposition it within the Chord Path window by dragging it. Open the Chord Properties window to set its name and behavior.

After you place a chord in the Chord Path window, you can edit its properties without affecting any other chords. However, in the case of signpost chords, you must keep the name and properties of the pairs of beginning and end signpost chords equal, as well as the corresponding chord in the Signpost list. For more information, see Maintaining Chord Consistency.

Signpost chords must occur in a segment on measure boundaries. Therefore, you must position signpost chords in the Chord Path window so they occur on the first beat of a measure. The exception to this is when you create a chordmap with variable chord durations. See Fixed and Variable Connection Lengths.


Inserting Signpost Pairs

Beginning signpost chords represent the starting points of chord paths. They are distinguished by a green triangle, as shown in the following figure.

End signpost chords represent the termination of chord paths. They are distinguished by a red diamond symbol, as shown in the following figure.

All beginning signpost chords should be positioned at the left edge of the window. The position of the end signpost chords is determined by the length of the chord paths leading to them.

To insert a matching pair of signpost chords, right-click a chord in the Signpost list and click Insert into Chordmap on the shortcut menu. Beginning and end signposts are placed on the left and right edges of the chordmap, as shown in the following figure.

Inserting a signpost pair

You can move the end signpost to the left to create a shorter chord path.

If you inadvertently delete one of the pair of signpost chords, you can create a single chord in the usual fashion and then designate it as a signpost. For more information, see Inserting Chords in the Chord Path Window.

For an overview of how signpost pairs are used, see Beginning and End Signpost Pairs.


Drawing Connections Between Chords

A chord path starts with a beginning signpost chord, ends at an end signpost chord, and can pass through multiple connection chords on the way. You can extend a path from any chord to any other chord that begins at least one beat later. Multiple direct connections between the same pair of chords, with no intervening chords, are not possible.

To begin a path, locate a beginning signpost chord, which is marked by a triangular start symbol. Click the small rectangle, called the connection box, on the right side of the signpost chord. The connection box is shown in the following figure.

Drag the mouse to a chord at least one beat to the right and release the button. A line is drawn between the two chords, and a new connection box is added to the first chord, as shown in the following figure.

Connecting two chords

Extend the path by drawing lines from each connection chord to the next, until you reach an end signpost chord. Typically, you do not place chords to the right of an end signpost, and no connection should extend from an end signpost's connection box. However, you can choose to create Linear Chordmaps with signpost chords at various points.

To make a branch in the path, draw a connection from the lowest connection box on a chord. Each time you make another connection, a new, unused connection box is added.

A new connection remains selected and is shown in red until you click elsewhere. To select a connection later, click its connection box.

To redirect a connection, click its connection box and draw a new connection. The old connection is replaced by the new one.

Edit the properties of the selected connection in the Connection Properties window. You can also delete the selected connection by pressing DELETE or by using the shortcut menu.


Connection Properties

The Properties Window for a connection between two chords in the Chord Path Window is shown in the following figure.

Connection Properties window

The window contains the following settings:

  • Connection Weight

    Weight assigned to the connection when chord paths are selected during the composition process, in the range from 0 to 100. The greater the value, the greater the likelihood that the connection will be selected as a chord path is being traced. However, other factors such as the activity level of the segment are also taken into account in the selection of chord paths. For information on activity level, see Signpost Track Properties.

    By default, all connections have a medium priority setting of 50. A setting of 0 specifies that the connection is never used.

  • Connection Length

    Minimum and maximum number of beats between the connected chords. The text boxes are enabled only if the Edit Mode setting on the Chordmap Tab of the Chordmap Properties window is set to Variable. The default maximum value is determined by the current distance between the chords as measured by the chordmap timeline. For more information, see Fixed and Variable Connection Lengths.


Fixed and Variable Connection Lengths

The length of a connection—that is, the number of beats that separate the two chords it connects—can be either fixed or variable, depending on the Edit Mode setting on the Chordmap Tab of the Chordmap Properties window.

The maximum duration of a chord is normally calculated according to its position relative to the timeline in the Chord Path Window. Dragging a chord to the left or right in the Chord Path window causes the maximum duration to be recalculated. When the Edit Mode setting is Fixed, the maximum and minimum durations are equal.

When the Edit Mode setting is Variable, the range of variation is set in the Connection Properties window. By default, the minimum length is 1 and the maximum length is the current length of the connection as displayed on the timeline. Both these values can be changed; however, if you subsequently drag either chord to a new position, the maximum length is reset to agree with the display.

The advantage of using variable connection lengths is flexibility in selection of chord paths when chords are composed. If a chord path has a total fixed duration of 12 beats, it can be selected only when exactly 12 beats need to be composed between signpost group markers in the segment. If, on the other hand, the connections have variable lengths, the path might be selected to fill spaces of other durations, such as 8 or 16 beats.

Note If the chordmap and the segment use different time signatures, an end signpost chord on a measure boundary might not fall on a measure boundary in the segment. If fixed-length connections are being used, this means the chord path leading to that end signpost will not be selected. However, when you use variable durations, there is greater flexibility for where you position signposts in the Chord Path window. As long as the minimum or maximum number of beats in a chord path can fit between signposts in a segment, the path can be used, regardless of whether the signposts are on measure boundaries in the Chord Path window.

Example of Variable-Length Path

The following figure shows a chord path using variable-length connections.

As the Connection Properties window shows, the 2CM beginning signpost chord has a duration ranging from 4 to 12 beats. In addition, assume that the following statements are true:

  • The 2DM connection chord has a duration ranging from 4 to 8 beats.
  • The 2FM connection chord has a duration ranging from 8 to 16 beats.

The overall minimum length of this path is 16 beats (4 + 4 + 8), and the maximum length is 26 beats (12 + 8 + 16).

Suppose you create a segment in a 4/4 time signature with signpost group markers in measures 1, 5, and 13. The following table shows the length of the two required chord paths, in beats.

Marker (measure) | Length of path (beats)
1 | 16
5 | 32
13 | Not applicable

Assuming that all the signpost groups include a 2CM beginning signpost, the chord path shown in the figure would be suitable for use beginning at measure 1, because the required length of 16 beats falls within its range. But the chord path cannot be used at measure 5, because 32 beats exceed its maximum length.


Linear Chordmaps

End signpost chords are generally used as termination points for chord paths. When an end signpost is reached, a new chord path is selected, often with an element of randomness.

It is also possible, however, to create a chordmap consisting of a single chord path that extends over many measures in a linear fashion, with signpost chords in the middle. Such a chordmap is shown in the following figure.

The behavior of this chordmap is essentially the same as that of a chordmap with several shorter chord paths that do not branch, as shown in the following figure.

Linear chordmap with multiple paths

When you create a linear chord path, you must designate the signposts in the middle of a path as both beginning and end signposts, as shown here.

Beginning and end signpost

To do this, right-click the signpost chord and click both options, Toggle Beginning Signpost and Toggle End Signpost, on the shortcut menu.


Chord Palette

The chord palette contains the chords that define a chordmap and its general mood. Use the palette as a quick source of chords that you have named and that have an underlying scale assigned to each chord. You are not restricted to using chords in the palette, but it is most convenient to set up the palette so that it contains appropriate chords for the chordmap you are working on. Chords in the palette can be copied to the Clipboard or dragged to the Signpost List or the Chord Path Window.

The default setup of the chord palette has a major triad built on every root pitch. You can customize the default palette so that it contains other chords on each root, such as all minor triads or all dominant seventh chords. You can also create a new chord palette containing chords built using pitches from a single, underlying scale of your choice. For more information, see Editing Chords in the Palette and Using the Chord Palette Command to Create a New Palette.

The following figure contains the default palette and examples of custom palettes you can create.

Default and custom palettes

The root pitches in the palette are permanently set to the pitches of a chromatic scale spanning two octaves. The two octaves of chromatic pitches, 1C through 2B, are the only roots available. However, you can design a chord using pitches in a four-octave range and extending as much as two octaves above a root.


Editing Chords in the Palette

Edit a chord in the chord palette by opening its Properties Window. For more information, see Chord Properties.

You can edit all properties of a chord in the palette just as you would elsewhere in Chordmap Designer or the Chord Track, with the exception that the root of the selected chord (for example, 2 C) is permanently fixed and cannot be changed.

Editing a chord in the palette does not affect any chords already placed in the Signpost List or the Chord Path Window.


Using the Chord Palette Command to Create a New Palette

The easiest way to create a new palette of chords is to use the Chord Palette command on the Chordmap menu, a special menu that appears on the main menu when Chordmap Designer is open. This command gives you preset chord choices for replacing all chords in the chord palette with a single type of chord, such as all minor triads, all dominant seventh chords, and so on, or generating a palette of diatonic chords from the pitches in the underlying scale that you set in the Chordmap Properties window.

The Chord Palette submenu contains the preset chord choices shown in the following figure.

Chord Palette menu

The effect of each option is as follows:

  • Triads from Underlying Scale

    Diatonic triads on each root in the underlying scale. Chords with roots not in the underlying scale are major triads.

  • 7ths from Underlying Scale

    Diatonic 7th chords on each root in the underlying scale. Chords with roots not in the underlying scale are major triads.

  • Major Triads

    All major triads on each root.

  • Minor Triads

    All minor triads on each root.

  • Major 7ths

    All major 7th chords on each root.

  • Minor 7ths

    All minor 7th chords on each root.

  • Dom 7ths

    All dominant 7th chords on each root.

Choosing Triads from Underlying Scale or 7ths from Underlying Scale generates a chord palette of seven chords, duplicated in the upper octave, consisting only of notes from the underlying scale, and interspersed with major triads built on roots not in the underlying scale. Each pitch in the underlying scale is used as the root for a new chord in the palette and, wherever possible, for the other tones of the new chords.

DirectMusic Producer generates new chords for the palette by selecting the odd- or even-numbered pitches of the underlying scale and assigning them to the chords with those pitches as roots. For example, the Dom 7ths option yields a palette with the following chords.

  • The I chord consists of the 1, 3, 5, and 7 tones of the scale.
  • The II chord consists of the 2, 4, 6, and 8 tones of the scale.
  • The III chord consists of the 3, 5, 7, and 9 tones of the scale.
  • And so on.

All chords with roots not in the underlying scale remain as major triads.

Because the default underlying scale is a major scale, choosing Triads from Underlying Scale without altering the default underlying scale generates a chord palette containing a sequence of Maj, min, min, Maj, Maj, min, and dim diatonic triads. If you change the underlying scale, you can use the Chord Palette command again to update the chord palette using the new pitches in the underlying scale.

If you use the Chord Palette command after you edit chords in the palette, all previous editing done to the palette is lost and new chords are generated.

You can make changes to the underlying scale in the Chordmap Properties without affecting the chord palette. However, if you subsequently click the Chord Palette command, the new underlying scale is used to generate all new chords.


Maintaining Chord Consistency

A chord can exist in the following places in Chordmap Designer:

  • As part of the Chord Palette.
  • In the Signpost List.
  • In the Chord Path Window.

To maintain consistent chord behavior throughout the chordmap, it is important to keep the Chord Properties closely matching one another. For example, signpost chords in the Chord Path window are linked to and interact with corresponding chords in the Signpost list. Changing the properties of a signpost chord in the Chord Path window or the Signpost list may break the link between the chords.

To match one another, chords must have at least two characteristics in common:

  • They must have the same root note (such as 2C, 2D, or 1F#).
  • They must have the same four-level chord structure.

It is not required that chords have the same chord scale, inversion settings, or chord quality description, such as major and minor.

To maintain consistent chords in a chordmap, you can plan ahead by editing the properties of one chord and using copies of that chord in other places.

For example, it is recommended that you keep the properties of signposts in the Chord Path Window the same as the properties of the corresponding chord in the Signpost List. Therefore, if you plan to change a signpost's properties, it is recommended that you first delete all instances of the chord from the Chord Path window and then change the properties of the chord in the Signpost list. You can then re-enter the signpost chords in the Chord Path window using the Insert into Chordmap command on the shortcut menu for the Signpost list.

Similarly, if you change the properties of a chord in the palette, you can re-enter the chord in the Signpost list or the Chord Path window to ensure consistency between all three areas of the chordmap.

The following figure shows the recommended procedure for editing a chord and replacing it in the Signpost list and Chord Path window.

Procedure for editing a chord


Segment Key Changes and Chordmaps

After you compose a chord progression using a chordmap, you can use the segment key to adjust the playback with 2C as a center point. Do this by moving the segment key up or down from 2C. In this way, you can experiment with different keys while you decide which key suits the segment as it mixes the style or pattern notes with the chords in a chordmap.

The key setting in a segment is included in its Segment Properties window.

The segment's key setting transposes all the chords imported from a chordmap. However, only the data stored in the segment is affected—the original chordmap file is not transposed or altered. If you change the segment key from 2C before using the Compose Chords Button, chords are imported from the chordmap in their original key.

When you change the key of a segment, all chords in the segment are affected. For example, placing a D major chord in the chord track while the segment key is set to C produces music in the key of D. If you change the template key to Eb, a minor third higher, the music plays in F. This is true for chords that are placed in the segment when you click the Compose Chords button, and for any chords you insert manually into the Chord Track using the mouse.


Audiopath Designer

An audiopath is a performance configuration that maps sets of Performance Channels (PChannels) to synthesizers, output buffers, and effects such as reverb and chorus.

The Audiopath List in the Transport Options toolbar contains several Standard Audiopaths to be used as the default performance configuration for all PChannels. Applications can also set up any of these standard audiopaths and can play different segments on different audiopaths.

In addition, you can create custom configurations and distribute these separately with your run-time files, or embedded in segments. Creating a custom audiopath eliminates the need to inform application developers of special output requirements for a project or an individual segment.

The standard audiopaths contain a single path for all PChannels. Custom audiopath configurations can contain multiple paths for different sets of PChannels.

A custom audiopath configuration is created in the following steps:

  • Organize PChannels into mix groups

    An audiopath can have as many mix groups as you want, each containing one or more PChannels. Only PChannels in mix groups are played on the audiopath; others are silent.

  • Assign a synthesizer to use with each mix group

    Normally all mix groups play on the default synthesizer. However, it is possible to specify another synthesizer and even to play different mix groups on different synthesizers.

  • Create buses and buffers for each mix group

    A bus is a path between the synthesizer and the first buffer in a chain. Most groups have one or two buses to each buffer, usually corresponding to the audio channels being played. A buffer is a destination for data and a place where 3-D spatialization and effects can be applied. A mix group can have multiple buses and buffers.

  • Add effects to buffers (optional)

    Each buffer can have one or more effects associated with it. A special kind of effect called a Send is used to chain buffers together, so that effects can be applied sequentially. A destination buffer can be shared by Sends in several mix groups.

The following figure shows one possible configuration of buses, buffers, and effects for an application that uses three mix groups. Mix group A is for a stereo musical soundtrack and is sent to a Waves reverberation effect. Mix groups B and C are for 3-D sound effects. Mix group B sends its entire signal to a shared mix-in buffer where the I3DL2Reverb environmental reverberation effect is applied. Mix group C first applies a chorus effect, then sends part of its signal, the "wet" part, to the mix-in buffer, and the "dry" part straight to the final mixer.

Flow of data through buffers and effects


Audiopath Properties

The Properties Window for an audiopath in the project tree contains the following tabs:

  • Audiopath Tab

    Contains one setting, Name, which is the internal name of the audiopath as it appears in the project tree.

  • Info Tab

    Contains generic descriptive information about the component.


Audiopath Designer Window

Double-click the internal icon of an audiopath in the project tree to open the following window.

Audiopath Designer Window

The Audiopath Designer window is divided into two regions. On the left is a list of mix groups; that is, groups of PChannels sharing common playback configurations. On the right is the Effect Palette, a list of available effects that can be added to mix group buffers. These regions can be resized, and you can resize individual columns by dragging a vertical line in the top bar.

Each mix group has information in the following columns:

  • Mix Group

    Range of channels in the group and the name of the group. For more information, see Managing Mix Groups.

  • Bus and Buffer

    List of buses and buffers used by the group. Right-click either of these columns to open a shortcut menu for adding and removing buses and buffers. For more information, see Buses and Buffers.

  • Effects List

    List of effects applied to the sounds in this mix group. Multiple effects are separated by a vertical line. Add an effect to this list by dragging it from the Effect Palette. For more information, see Managing Effects.

The Effect Palette contains standard effect types supplied with DirectMusic Producer, called Microsoft DirectX Media Objects (DMOs). You can add to the Effect Palette by installing other available DMOs on your system.


Auditioning an Audiopath

All audiopaths in the project tree as separate components are available in the Audiopath List in the Transport Options toolbar, along with the standard audiopaths. When you select an audiopath in the list, it becomes the default audiopath for playback of all components within DirectMusic Producer, except segments that have embedded audiopaths.

The following figure shows the Audiopath list with the standard audiopaths and a custom audiopath called My Audiopath.

When you switch from one audiopath to another, changes are applied to all PChannels. Any PChannels not included in mix groups in the new audiopath are silent during playback.

To ensure that a segment always plays on a particular audiopath, put the audiopath inside the segment in the project tree. See Embedding an Audiopath in a Segment.


Buses and Buffers

A bus is an internal pathway along which information travels. A buffer is a storage place for data in which audio effects such as reverb or echo, as well as 3-D spatialization, are applied to signals before they are sent to the next buffer in the chain or to the final mixer.

Each buffer associated with a mix group is connected to the synthesizer by one or two buses. Buffers that are destinations for Send Effects do not have any PChannels or buses.

When designing a simple audiopath, generally one buffer is used for each mix group, and all PChannels in the mix group use the same set of audio effects. There are situations, however, where more buffers can usefully be added in the mix group path. For example, you might use a combination of a User Defined buffer and one of the standard buffers to apply multiple effects.

When you add a new buffer to a mix group, it must have at least one bus to carry data to it. You can insert one additional bus, but the only case where this is generally done is when using separate buses for a stereo signal.

To insert multiple buffers in a mix group, use the Insert Buffer command to insert the buffer and one bus. For more information about this command, see Managing Buses and Buffers.

A buffer can be shared by more than one mix group, but each different mixture of audio effects requires that a unique buffer be set up to contain them. See Sharing Buffers.

When you create a new audiopath file, a single mix group is inserted with a default Stereo (L+R) bus and a User Defined buffer.


Bus Types

The types of buses shown in the following table are available for use with a mix group.

Bus Type | Description
Stereo (L+R) | Accepts input from left and right channels and sends output to both speakers, using pan settings as specified in the PChannel Properties. This bus type is actually two buses, equivalent to Left and Right.
Left | Accepts input that is set to play on the left audio channel. Output is sent equally to both left and right speakers.
Right | Accepts input that is set to play on the right audio channel. Output is sent equally to both left and right speakers.
Mono | Accepts input that is set to play on left and right channels and sends output to both speakers, ignoring pan settings.
Reverb Send | Enables controlling the level of reverb on the bus using continuous controller 91 for Ext Effects (Reverb) Depth. See Reverb Send and Chorus Send Buses.
Chorus Send | Enables controlling the level of chorus on the bus using continuous controller 93 for Chorus. See Reverb Send and Chorus Send Buses.
Default | Added only when you use any of the Standard Buffer Types. Each standard buffer uses a preset bus choice.

Note When you insert the Left and Right buses separately, they are automatically displayed as a Stereo (L+R) bus.


Reverb Send and Chorus Send Buses

Use the Reverb Send bus or the Chorus Send bus to enable the use of two special continuous controllers (CCs) in pattern parts or sequence parts.

On the Microsoft Synthesizer, these controllers adjust the volume of the buffer as a segment plays. The Reverb Send bus responds to CC 91, the Ext Effects (Reverb) Depth controller. The Chorus Send bus responds to CC 93, the Chorus controller. The volume of any signal going through one of these buses is adjusted by corresponding curves in segment tracks.

The Reverb Send bus is used by the Standard Reverb buffer type. In addition, you can add either or both of these buses to any User Defined buffer, and the volume of the buffer will respond regardless of whether it contains effects. Typically, however, you would use these buses in conjunction with effects. By using the Reverb Send or Chorus Send buses to control the volume of an audio effect in one buffer, with a separate bus to another buffer containing no audio effects, you can easily control the wet/dry mix, or the mix of processed and unprocessed sound. This is an alternative to using the wet/dry mix setting in the Effect Properties window or setting parameters dynamically by using the Parameter Control Track.

The most convenient way to use CC 91 is in conjunction with the Standard Stereo and Reverb audiopath, which sends output through two buffers: the Standard Stereo buffer using no effects, and the Standard Reverb buffer using the Reverb Send bus and a reverb effect. As a pattern or sequence containing CC 91 plays, the audio signal using the reverb buffer becomes louder or quieter, so the mixture of reverb sound and normal stereo sound changes.

See Also

  • Special Controller Types
  • Standard Buffer Types
  • Standard Audiopaths


Standard Buffer Types

Buffers can have a great variety of configurations, but four standard types are available in the Buffer Properties window, as shown in the following table.

Standard Buffer | Description
Standard 3D (Dry) | Enables 3-D spatialization, without reverb. Good for nonmusical sound effects.
Standard Reverb | Includes a reverb effect suitable for music. See Reverb Send and Chorus Send Buses.
Standard Mono | Mono buffer with no effects.
Standard Stereo | Stereo buffer with no effects.

Each standard buffer is preset in the following ways:

  • One or two buses are created. Each standard buffer type uses the appropriate bus or buses. These are displayed in the Bus column as Default.
  • The number of audio channels used in the buffer is set to at least the number of buses.
  • The Standard Reverb buffer contains an effect. This is not shown in the Effects list, as no change can be made as long as the buffer remains a standard buffer.
  • The Stereo buffer and Reverb buffers have two channels.
  • Settings such as volume and pan are left at their default, neutral values, so that settings in PChannels are not affected.

A fifth standard buffer type, the Standard Environmental Reverb Buffer, cannot be used in a mix group that contains PChannels, and is not available as a selection in the Buffer Properties window. It is used only as a destination for Send Effects.


Standard Environmental Reverb Buffer

The Standard Environmental Reverb buffer is a standard buffer containing an effect not found in the Effect Palette. It serves only as a destination buffer for Send Effects. It does not have any PChannels, because it can accept data from buffers belonging to any mix group. An audiopath can have only one of these buffers.

To insert a Standard Environmental Reverb buffer, right-click on the Mix Group column and click Insert Env Reverb. The buffer is assigned to a special mix group called Standard Env. Reverb, which is available as a destination for Send effects in the same audiopath. There can be only one such mix group in an audiopath.

The only property in the Buffer Properties window that can be changed is Share buffer with other audiopaths.

You cannot edit the default parameters of the Standard Environmental Reverb effect. However, parameters can be changed dynamically by the Parameter Control Track, and directly by applications.


User Defined Buffers

Unlike one of the Standard Buffer Types, a User Defined buffer does not have a fixed configuration. You are free to modify any of the buffer's properties and to add effects.

A standard buffer can be converted to a User Defined buffer, and the other way around, by changing the Use Standard Buffer option in the Buffer Properties window.


Standard Audiopaths

Several standard audiopaths are provided that you can use for quickly configuring all PChannels from 1 through 128. The buses and buffers of a standard audiopath are preset and cannot be changed.

The following table contains a description of all the standard audiopaths.

Name | Buses | Channels | Other Settings | Buffers
Standard Stereo | Stereo L+R | 2 | Neutral setting for pan and volume. Doppler shifting enabled. | One shared stereo buffer with no effects.
Standard Stereo plus Reverb | Stereo L+R | 2 | Neutral setting for pan and volume. | Two shared buffers; one has reverb effect.
Standard 3D (Dry) | Mono | 1 | 3-D Control is enabled with neutral settings. Doppler Effect enabled. | One 3-D buffer with no effects, not shared.
Standard Mono | Mono | 1 | Neutral setting for pan and volume. Doppler Effect enabled. | One mono buffer with no effects, not shared.

The standard audiopaths use standard Microsoft DirectSound buffers set to use the required number of buses and audio channels to route data to the buffers. Some standard buffers also contain effects. For information about the settings of the DirectSound buffers, see Standard Buffer Types.

You can use standard audiopaths in two ways:

  • Select a standard audiopath in the Audiopath List for auditioning files. The audiopath you choose in the list is used as the default for playback of all files that do not have an embedded audiopath.
  • Create a new audiopath based on a standard audiopath. See Creating an Audiopath.

Applications also have access to the standard audiopaths for playing your content files.


Creating an Audiopath

A new audiopath can be based on one of the Standard Audiopaths or on another existing audiopath in the project tree. You can also create a new, empty audiopath that contains a single default Stereo (L+R) bus that sends output to a User Defined buffer.

If you create an audiopath file based on a standard audiopath, it contains a single mix group, receives the signal from PChannels 1 through 128, and uses preset choices for buses and buffers.

Audiopaths are fully editable whether or not they are based on standard audiopaths. Standard audiopaths are a convenience for setting up common output scenarios, but you are free to modify audiopaths based on them.


To create an empty audiopath

  1. On the File menu, click New.
  2. In the File Types list, click Audiopath.
  3. Click OK to automatically select a new default name for the audiopath, such as Audiopath1, or click Use Default Name to enable the Name box, enter a name for the audiopath, and click OK.
  4. In the New Audiopath dialog box, accept the default selection of Create an empty audiopath. Click OK. The Add/Remove PChannels Dialog Box is displayed.
  5. Select one or more PChannels to assign to the mix group. You will be able to add more mix groups and reassign PChannels among mix groups after creating the audiopath.

    Note If a mix group contains no PChannels, it has no bus. A path that does not receive an audio signal from a specific set of PChannels can only be used as a destination for a Send effect.

  6. Click OK. An icon for the new audiopath is added to the project, and a Audiopath Designer Window is displayed containing a single mix group using the default bus and buffer.


To create an audiopath based on an existing audiopath

  1. On the File menu, click New.
  2. In the File Types list, click Audiopath.
  3. Click OK to automatically select a new default name for the audiopath, such as Audiopath1, or click Use Default Name to enable the Name box, enter a name for the audiopath, and click OK. The following New Audiopath dialog box is displayed.

    New Audiopath dialog box

  4. Click Create a new audiopath based on an existing audiopath, and select the desired audiopath in the list.
  5. Click OK. An icon for the new audiopath is added to the project, and an Audiopath Designer Window is displayed containing the new audiopath.


Managing Mix Groups

You can select one or more mix groups by clicking in the Mix Group column of the Audiopath Designer Window, optionally pressing CTRL or SHIFT to select multiple groups.

Right-click anywhere in the mix group column to display a shortcut menu. The commands shown in the following table are available.

Command | Description
Cut Mix Group(s) | Cut selected group(s).
Copy Mix Group(s) | Copy selected group(s).
Paste Mix Group(s) | Paste selected group(s) to list. A pasted group overwrites any other group that uses the same PChannels.
Insert Mix Group | Insert a new mix group. The Add/Remove PChannels Dialog Box is displayed.
Delete Mix Group(s) | Delete selected group(s).
Select All Mix Groups | Select all to cut, copy, or delete.
Add/Remove PChannels | Change PChannel assignments for the group that was selected last. The Add/Remove PChannels Dialog Box is displayed.
Insert Env Reverb | Insert a mix group that has no PChannels and a Standard Environmental Reverb Buffer.
Properties | Display the Mix Group Properties window for the group that was selected last.


To create a mix group

  1. In the Audiopath Designer Window, right-click under the Mix Group heading, and then on the shortcut menu click Insert Mix Group, as shown in the following figure.

    Insert Mix Group command

    The Add/Remove PChannels Dialog Box is displayed.

  2. Add PChannels as desired. You cannot add PChannels that belong to other mix groups.
  3. Click OK. A mix group using the default Stereo (L+R) bus is added to the list.


To rename a mix group

You can rename a mix group in two ways:

  • Enter the new name in the Mix group name text box in the Mix Group Properties window.
  • Select the mix group in the Audiopath Designer window, then click on the name. A editing window opens. Edit the name and then click elsewhere.


Mix Group Properties

The Properties Window for a selected mix group is shown in the following figure.

Mix Group properties window

The window contains the following settings:

  • Mix group name

    Name of the group as displayed in the Audiopath Designer window.

  • Synthesizer

    Output port for the PChannels in the mix group. Output ports can include any compatible software synthesizers or hardware playback devices installed on your computer. The Default Synth is usually the Microsoft Synthesizer, but this can be changed in the MIDI/Performance Options Dialog Box.

    Note Not all synthesizers support all audiopath features. For example, some do not support all effects. Selecting specific hardware is useful in testing the use of your files with the hardware, but the Default Synthesizer is generally recommended for any content that is to be redistributed on other machines.

  • Edit Synth Properties

    For synthesizers that do not support output to DirectSound buffers, you can click this button to display the Edit Synth Settings Dialog Box and set properties for the synthesizer within this audiopath.


Edit Synth Settings Dialog Box

The Edit Synth Settings dialog box, shown in the following figure, is displayed when you click Edit Synth Properties in the Mix Group Properties window.

Edit Synth Settings dialog box

You cannot edit the settings for the Microsoft Synthesizer or any other synthesizer that supports output to DirectSound buffers. The only place to edit the settings for those synthesizers is in the MIDI/Performance Options Dialog Box. Conversely, settings in the MIDI/Performance Options dialog box only affect those synthesizers that support output to DirectSound buffers.

The dialog box contains the following settings:

  • Synth Name

    Name of the synthesizer. This value is set by the driver and cannot be changed.

  • Voices Allocated

    Number of individual voices the synthesizer can play at one time. The default number shown in the window is the maximum number of voices supported by the selected port. See Voice Allocation.

  • Enable Reverb

    Enables the built-in reverb effect of the synthesizer. This option check box is available for synthesizers that provide reverb.

  • Enable Chorus

    Enables the built-in chorus effect of the synthesizer. This option check box is available for synthesizers that provide chorus.

  • Sample rate

    Samples per second in the final mix.


Managing Buses and Buffers

You can select one or more buffers, with their associated buses, by clicking in the Bus or Buffer column of the Audiopath Designer Window, optionally pressing CTRL to select multiple items.

Right-click anywhere in the Bus or Buffer column to display a shortcut menu. The available commands are shown in the following list.

Command | Description
Add/Remove Buses | Display the Add/Remove Buses Dialog Box to insert or delete buses associated with the selected buffer.
Insert Buffer | Insert a new buffer in the same mix group as the buffer selected last. See Managing Buses and Buffers.
Delete Buffer | Delete the selected buffer(s).
Properties | Display the Buffer Properties window for the buffer selected last.


Add/Remove Buses Dialog Box

The Add/Remove Buses dialog Box, shown in the following figure, is used to set the buses that go to a single buffer. Each buffer can use only one or two buses.

Add/Removes Buses dialog box

The dialog box contains the following elements:

  • Buses available from synth

    List of available buses. Select one bus to add. For a description of each bus type, see Buses and Buffers. Adding Stereo (L+R) is equivalent to adding Left and Right.

  • Buses in use

    List of one or two buses used by the buffer. Select a bus to remove or move up.

  • Add

    Add the selected available bus. This button is not enabled if there are already two buses in the Buses in Use list.

  • Remove

    Remove the selected bus from the Buses in Use list.

  • Reset

    Reset the Buses in Use list to the default state.

As a general rule, a buffer should have only Left and Right buses, or a single bus of another type. In most cases, you add more functionality to a mix group by adding buffers. For each new buffer you insert, a new bus is automatically added.


Resource Usage and Buffers

When using multiple buffers in an audiopath, you must consider the cost in memory and other resources. Planning ahead can eliminate unnecessary duplication of buffers and reduce the overall audio resource requirement.

For example, if a buffer is used more than once, you can share it to conserve resources. See Sharing Buffers.

When an audiopath is used in a performance, buffers are created in the order they appear, beginning at the top of the audiopath file. This is important when allocating hardware resources.

When you use a Send destination buffer, it is never lower in the audiopath file than the Send source buffer. The order of the list of buffers shown in the Audiopath Designer window is identical to the order of the list of buffers that are created when the audiopath is used for playback. Therefore a Send destination is always created before the buffer that sends data to it. See Send Effects.

Using DirectSound accelerating hardware for mix groups also affects computer resources. DirectSound accelerates the mixing and positioning of the underlying buffer of the audiopath. If you use a DirectSound hardware accelerating card for an audiopath, DirectSound does not use its own software mixer. This reduces CPU usage and allows for multi-speaker playback using 3-D parameters. It also allows you to set the latency setting lower for the synthesizer, because the audiopath bypasses the DirectX software mixer, which has inherent latency.


Buffer Properties

The Properties Window for a buffer selected in the Audiopath Designer Window is shown in the following figure.

NEED TO ADD ALT TEXT

The Buffer Properties window contains the following settings:

  • Use standard buffer

    Select this check box to make the buffer one of the Standard Buffer Types selected in the drop-down list. Most other options are not available, because the properties are preset for standard types. In addition, the bus for the buffer is listed as Default and cannot be changed.

    If the check box is not selected, the buffer is User Defined, and you are responsible for setting all properties.

  • Share buffer with other audiopaths

    Select to share the buffer. See Sharing Buffers.

  • Channels

    Enter or select the number of audio channels, either 1 or 2. This value is read-only unless the buffer is User Defined and has only a single bus. A buffer must have at least one audio channel for each bus. For most purposes, the number of buses and number of channels should be the same.

  • Enable Doppler Effect

    Select to allow applications to apply Doppler shift to the pitch of the sound by using the 3-D capabilities of DirectSound.

  • Edit GUID

    Click this button to open the Edit GUID Dialog Box. The GUID is used for Sharing Buffers.

  • Enable 3D Control

    Click to enable 3-D spatialization of the buffer by applications.

  • 3D Position

    Click this button to open the 3D Parameters dialog box and set the default location and other parameters of the sound. For information on these parameters, see the Microsoft DirectX audio documentation.

  • Mute at maximum distance

    Select to mute the buffer when it is located too far away to be heard. See the DirectX documentation for more information.

  • Algorithm

    Select an algorithm for processing the 3-D parameters. In most cases, the Default setting gives satisfactory results. For more information, see the reference topic for the DSBUFFERDESC structure in the DirectX documentation.

  • Pan

    Click this option to enable stereo panning of the buffer. A buffer cannot support both 3-D spatialization and panning.

    In the text box, enter or select a default pan value in the range from L10000 (hard left) to R10000 (hard right). This value can be changed by applications. It is cumulative with the pan value set for individual PChannels; see PChannel Properties.

  • Volume

    Enter or select a value in the range from 0 to -10000 to set the volume of the buffer, expressed in degrees of attenuation. Zero is full volume.


Sharing Buffers

To conserve resources when your files are played, you can reuse buffers in different mix groups and even in different audiopaths. Any mix groups or audiopaths that require the same capabilities can share a buffer.

At run time, an application can create multiple instances of any audiopath configuration. By default, a copy is made of each buffer in each instance. However, if the Share buffer with other audiopaths option is selected in the Buffer Properties, the buffer is created only once and shared by all instances.


To share a buffer between mix groups or audiopaths

  1. Select or create a buffer and open the Buffer Properties window.
  2. Click the Edit GUID button.
  3. In the Edit GUID Dialog Box, select the GUID and copy it to the Clipboard.
  4. If the buffer is to be shared with another audiopath, click Share buffer with other audiopaths. This is not necessary for sharing the buffer with another mix group within the same audiopath.
  5. Click OK.
  6. Select or create another buffer in a different mix group or audiopath.
  7. If the original buffer is in another audiopath, click Share buffer with other audiopaths in the Buffer Properties window,
  8. Click the Edit GUID button.
  9. In the Edit GUID dialog box, select the GUID and replace it by pasting from the Clipboard.
  10. Click OK.


Managing Effects

Effects can be inserted into User Defined buffers but not into Standard Buffer Types.

The right side of the Audiopath Designer window contains an Effect Palette, which contains all available DirectX Media Objects (DMOs). Insert an instance in the Effects List column by dragging an effect from the Effect Palette, or by right-clicking the Effects List column to open the shortcut menu shown in the following figure.

Effects List shortcut menu

If no effect is selected in the list, only the Insert Effect and Insert Send commands are available.

Choose Insert Effect to insert an effect into the buffer. Click Insert Send to insert a send effect, which will cause data in the buffer to be sent to another buffer that adds one or more effects. For more information, see Send Effects.

Choosing Insert Effects opens the Insert New Effect dialog box, shown in the following figure.

Insert New Effect dialog box

Choose the effect type you want to insert from the Base on existing effect list. A default name is provided for the instance of the effect that you are inserting. You can use the default name, or enter any name you want.

More than one effect can be inserted in a buffer. When you select an effect already in the list and insert another effect, the new effect is inserted to the left of the highlighted effect.

Effects in a mix group process audio output in the order in which they occur, from left to right. For Mix Group1 in the following figure, the Flanger effect is followed by the Echo effect, followed by the Chorus effect.

Multiple effects in a buffer

Move and rearrange effects in the Effects List by right-clicking it and using the Cut, Copy, and Paste commands. To work with multiple effects, press CTRL while selecting effects. When you insert or paste an effect, it can go to the right or left of an existing effect, depending on the position of the cursor when you select the existing effect.

For any effect in the Effects List, you can also open a Effect Properties window


Effect Properties

The Properties Window shown in the following figure contains settings for an effect in the Effects List column.

Effect Properties window

The window contains the following elements:

  • Effect Type

    Type of the effect. This value is fixed when the effect is added.

  • Edit Effect Properties

    Click this button to open a dialog box containing effect-specific settings.

  • Always Process in Software

    When this check box is selected, it specifies that the standard DMO is always used, even if a similar effect is available in a hardware synthesizer.

  • Instance Name

    Name of the effect as it appears in the Effects List column.

The Effect Properties window for a Send effect has additional settings for specifying the destination effect. For more information, see Send Effects.


File Output in an Audiopath

The Effect Palette contains a DirectX Media Object (DMO) called FileOutput. You can insert this effect in an audiopath when you want to use the wave export function to capture a performance as a wave file. See Wave and MIDI Export Toolbar.

To use the wave export function, you must select an audiopath in the Audiopath List that is set to route the output from all mix groups to a buffer containing the FileOutput DMO.

Information is recorded only from the PChannels in the mix group that uses the FileOutput effect. The following figure shows an audiopath file that sends all the output from PChannels 1 through 128 to be recorded as a wave.

Mix group using FileOutput effect

If a mix group already uses effects other than the FileOutput DMO, then you must use a Send effect to route the output after those effects to a buffer containing the FileOutput DMO. See Send Effects.

When you use the Wave and MIDI Export toolbar to capture a performance, you enter a file name for the wave file that is saved. If multiple buffers use the FileOutput DMO, multiple wave files are created. Each uses the same file name, followed by a number for the order in which it is created. For example, if you enter the name Record for the wave file, the first file created is saved as Record.wav, the second file is saved as Record1.wav, and then Record2.wav, and so on.

The order in which the files are created is the same as the order of mix groups, except that mix groups with PChannels are saved before those without PChannels.


Send Effects

A Send effect is a special type of effect that is used to route the audio output from a buffer to another buffer, so that the audio output can pass through effects in the second buffer before going to the final mixer. This allows you to send the combined output from multiple mix groups to effects that are to be shared by all.

A typical use of Send effects is for a reverberation effect to be applied to all PChannels. For example, different sounds in a game might be played through different buffers so that they can be moved individually in space. However, the same environmental reverb parameters should apply to all. In this case, each 3-D buffer sends its output to the same environmental reverb effect.

The following figure shows Mix Group2, Mix Group3, and Mix Group4, all sending their output to the buffer belonging to Mix Group1.

Sources and destination for send effect

In the figure, the buffers in Mix Groups 2, 3, and 4 are sources of the Send effect, and the buffer belonging to Mix Group 1 is the destination of the Send effect.

Only a mix group that has no PChannels can be used as a destination. Such a mix group cannot have a bus, because it is not directly connected to the synthesizer. It can have only one buffer.

If the source of a Send effect is a buffer with only one audio channel, the destination buffer of a Send effect must have either one or two audio channels.

If the source of a Send effect is a buffer with two or more audio channels, the destination buffer must have the exact same number of audio channels.

You can adjust the attenuation of the signal sent by a Send effect by clicking the Edit Effect Properties button in Effect Properties window.

A Send effect can be inserted after other effects in a buffer, as shown in the following figure.

The figure shows Mix Group3 using the Chorus and Compressor effects, and Mix Group4 using the Distortion and Echo effects. Both mix groups are routed to Mix Group1, so the output from both passes though the I3DL2Reverb effect before going to the final mixer. This eliminates the need for both to contain their own instance of the I3DL2Reverb effect, and ensures that the reverb parameters will be the same for all PChannels. Similarly, Mix Group5 and Mix Group6 are routed to Mix Group2, so their output passes though the WavesReverb effect before going to the final mixer.

Note Any effects to the right of the Send effect are not included in output that is routed to the destination mix group.

If you create a mix group with multiple buffers, you must insert a separate instance of the Send effect for each buffer from which you want to send the output to a different mix group. The following figure shows Mix Group2 with three buses, each leading to a different buffer. Only the output from the User Defined buffer in Mix Group2 is routed to Mix Group1. All other output from Mix Group2 goes directly from standard buffers to the final mixer.

Selective send in a mix group


To insert a Send effect

  1. Right-click the Effects List column in the row of the buffer where you want to insert the Send effect.
  2. On the shortcut menu, click Insert Send. A Send effect is added to the buffer, with a default destination of Standard Environmental Reverb. A Standard Environmental Reverb Buffer must exist in the audiopath if you want this to be the destination. This is all you have to do unless you want to send to a different buffer.
  3. To send to a different buffer, open the Effect Properties window for the Send effect.
  4. Select the destination mix group from the drop-down list. All eligible mix groups in all audiopaths that have been opened in Audiopath Designer are listed.

    To send to a destination in another audiopath that has not been opened, choose Other. The Edit GUID Dialog Box appears. Enter the GUID of the destination buffer, and click OK.


Embedding an Audiopath in a Segment

Within DirectMusic Producer, most segments are played on the audiopath selected in the Audiopath List. In applications, segments are usually played on an audiopath specified by the application, either a standard audiopath or one created from an audiopath configuration (.aud) file.

You can also embed an audiopath in a segment so that the segment plays on that audiopath at design time, and can easily be played on the same audiopath by applications as well. Embedded audiopaths provide greater control over playback and more flexibility in creating performance configurations that are specific to the content of the segment.

Note Embedded audiopaths consume more resources than shared audiopaths, and should be used only when necessary. See also Pitfalls of Embedded Audiopaths.

All other segments, unless they also have embedded audiopaths, will continue to play using the default audiopath.

An embedded audiopath completely replaces the default audiopath when the segment plays. If any settings in the embedded audiopath conflict with settings in the default audiopath, such as different effects on the same PChannel, a new PChannel is temporarily used for playback of the segment, so that the conflict is not heard. When the segment stops, audiopath settings revert to those in the default audiopath selected in the audiopath list.

To play a segment on its embedded audiopath, you must select the Play on new instance of embedded audiopath option in the Segment Tab of the Segment Properties window. When this option is selected, a new instance of the audiopath is created each time an instance of the segment is played. Changes to one instance, such as pitch bend or volume, do not affect other instances. Each instance of the audiopath is cleared immediately after playback of the segment instance ends.

Note that this behavior is different from what occurs when you play a segment multiple times on an audiopath that is not embedded. In the latter case, a single instance of the audiopath exists until it is explicitly destroyed. Any changes to parameters made by Continuous Controllers or the Parameter Control Track affect all instances of all segments playing on the audiopath.

An easy method for creating an audiopath for use with a segment is to create a new audiopath based on the default audiopath, and then change only the settings for the PChannels used in the segment. When you do this, all PChannels not used in the segment retain the default settings, and will continue to play without interruption. You can create an embedded audiopath based on any existing audiopath, or you can begin with a new, empty audiopath.


To embed an existing audiopath in a segment

  1. In the project tree, drag the icon of an audiopath onto the icon of a segment. A copy of the audiopath is added to the tree as a subcomponent of the segment. You can also use the Clipboard to copy an audiopath file into a segment file in the project tree.
  2. Open the Audiopath Properties window for the embedded audiopath.
  3. If Play on new instance of embedded audiopath is not selected, click it to turn on the use of the embedded audiopath for the segment.


To embed a new audiopath in a segment

  1. In the project tree, right-click the internal icon of a segment, and then click New. The New Audiopath dialog box appears.
  2. Select options in the dialog box. For more information, see Creating an Audiopath.
  3. Click OK.
  4. Open the Audiopath Properties window for the embedded audiopath.
  5. If Play on new instance of embedded audiopath is not selected, click it to turn on the use of the embedded audiopath for the segment.


Pitfalls of Embedded Audiopaths

When the Play on new instance of embedded audiopath option in the Segment Properties window is selected, a temporary instance of the audiopath is created only when the segment plays. The audiopath is deactivated and the instance destroyed immediately after playback.

When a segment stops, there is occasionally ring out time for audio effects used in its audiopaths. This is the period when sound from an audio effect continues after the segment itself has stopped. For example, a reverb or echo effect may ring long after the segment's last note is finished. When an embedded audiopath is deactivated, this can cause the ring out effect to be clipped.

Use one of the following alternatives to avoid clipping of ring out:

  • For a segment that is always played to completion, add extra measures to the end of the segment to ensure that ring out is finished. Note that if you intend to transition to other content right after the last note in the segment, adding extra measures will cause the transition to occur later.
  • Do not use the Play on new instance of embedded audiopath option, and then tell the developer that you want to play the segment on its embedded audiopath. A developer can programmatically create an instance of the audiopath, and control when this instance of audiopath is deactivated, waiting until the segment has completed and any ring out is finished.


DirectSound Buffer Settings in Audiopaths

Audiopaths make use of buffers that are controlled by the Microsoft DirectSound component of the operating system. Depending on the capabilities of the buffers in an audiopath, certain settings, called flags, are stored with the audiopath configuration. These flags are chiefly of interest to application developers.

The following table shows which flags are present for different buffer configurations.

Buffer properties | Flags
All buffers. | DSBCAPS_CTRLVOLUME DSBCAPS_GLOBALFOCUS
All standard buffers. | DSBCAPS_CTRLFX
User-defined buffers containing effects. | DSBCAPS_CTRLFX
2-D buffers. | DSBCAPS_CTRLPAN
3-D buffers. | DSBCAPS_CTRL3D
Buffers that have no PChannels in the mix group. | DSBCAPS_MIXIN
All buffers except those with DSBCAPS_MIXIN. | DSBCAPS_LOCDEFER
Buffers that have Enable Doppler Effect selected in the Buffer Properties window. | DSBCAPS_CTRLFREQUENCY

For more information on the flags, see the topic for the DSBUFFERDESC structure in the DirectX C++ documentation.


Toolgraph Designer

Tools are components that can be used to perform custom tasks within DirectMusic Producer or other DirectMusic applications. Tools can be used in an application if they are installed on the system running the application.

Note For the Microsoft DirectX 8.0 release of DirectMusic Producer, no standard tools are provided. Only custom tools created by using a software development language can be used in the Toolgraph Designer. For information about creating custom tools, refer to the DirectMusic Tools topic in the DirectX 8.0 SDK documentation.

Toolgraph Designer is used to organize tools in graphs, or chains. Toolgraphs are saved as separate components (.tgr files) or embedded in segments or audiopaths. A toolgraph component does not include the tools themselves, which are stored in dynamic link libraries (DLLs) that must be installed separately and registered as DirectMusic tools.

Tools can be used to implement simple effects. However, unlike effects implemented as DMOs, tools manipulate data before it reaches the synthesizer. At this stage, data is in the form of messages. A message might contain information about a note, a continuous controller curve, lyrics, a patch or tempo change, or the playing of a wave, among other things. In fact, almost all the data produced by segment tracks passes through the performance in the form of messages.

Because tools have access to data before it is synthesized, they are especially useful for manipulating the pitch and timing of musical notes.

Most tools are tailored to intercept only certain types of messages, such as note messages. The set of PChannels from which the tool accepts messages is defined by the toolgraph. After a tool has examined and perhaps modified the data in a message, it can pass on the message or delete it. It can also create new messages. For example, a simple echo effect can be implemented by intercepting note messages and creating duplicate copies with later time stamps and decreased velocity.


Toolgraph Properties

The Properties Window for a toolgraph in the project tree contains the following tabs:

  • Graph Tab

    Contains one setting, Name, which is the internal name of the toolgraph as it appears in the project tree.

  • Info Tab

    Contains generic descriptive information about the component.


Managing Tools

For information on working with toolgraph components in the project tree, see Managing Components. The following special commands are also available:

  • To insert a new, empty toolgraph in a segment, right-click the internal icon of the segment in the project tree, click New on the shortcut menu, and click Toolgraph on the submenu.
  • To insert a new, empty toolgraph in an audiopath, right-click the internal icon of the audiopath in the project tree and click New Toolgraph on the shortcut menu.

Only one toolgraph can be embedded in a segment or audiopath.

When you insert a tool into a segment, it controls playback output only from the segment, on the assigned PChannels. However, if another segment contains tools assigned to the same PChannels, then the tool settings in the two segments may conflict with each other when the segments play simultaneously. For example, if both segments use a transposition tool simultaneously, the transposition values will be summed.


Toolgraph Designer Window

When you double-click a toolgraph in the project tree, or create a new toolgraph, the following window is displayed.

Toolgraph Designer window

The window contains three resizable panes:

  • PChannel Group

    List of groups of PChannels. Each group sends its messages to a particular configuration of tools. Right-click in this area to display a shortcut menu. To add a group, click Insert PChannel Group. To change the composition of an existing group, right-click the group and click Add/Remove PChannels. For more information, see Add/Remove PChannels Dialog Box.

  • Toolgraph

    List of tool configurations. To add a column for a tool, drag the tool from the Tool Palette. To select an instance of a tool, click the name of the tool at the top of the column in the toolgraph pane. Right-click to display a shortcut menu for managing the list of tool instances.

    More than one instance of a tool can be placed in a toolgraph; by default, instances are named by adding a number to the name in the Tool Palette.

    To activate the tool for a PChannel group, click the rectangle in the tool column that is on the same row as the PChannel group.

    Messages pass through active tools in order, from left to right.

  • Tool Palette

    List of tools registered on the system. No tools are provided with DirectMusic Producer, so this area might be blank.

The following figure shows a toolgraph with tools assigned to four different PChannel groups. Blue rectangles indicate that a tool is active for that PChannel group.


Tool Properties

Each instance of a tool in the toolgraph has its own properties. To display properties in the Properties Window, select a tool instance by clicking on the column heading.

Note You cannot select a tool instance by clicking on it. The only way to display the properties is by using the shortcut menu.

The Tool Properties window contains the following elements:

  • Name

    Name of the tool.

  • Edit Tool Properties

    Click to display a tool-specific property page. Settings are saved to the toolgraph file and are the default settings when the tool is loaded.

At run time, tool properties can be changed by the Parameter Control Track. Applications can also call methods directly on the tool.


Script Designer

Scripts enable the sound designer or composer to exert more immediate control over the playback of components in an application.

If scripts are not used, many details of playback have to be left to the application developers. This is particularly true in interactive applications such as games, where the application specifies which sounds are played in response to different events. As a result, regular communication between the sound designers and the developers is necessary. Follow-up and adjustment are often required to ensure the proper execution of instructions from the sound design team, with the possibility of significant delays as the code must be changed and the application recompiled.

Using scripts, the compiled application no longer implements every detail of playback directly; instead, it calls into script routines written and maintained by the sound designers. For example, instead of specifying a segment and groove level for each scene in a game, an application can set a variable to notify the script of what scene is being played, and then call on the script to handle the details of playback. The sound designer can change the routine at any time and audition the results immediately, without needing to ask for a new build of the application.

Scripts can also be used within segments, eliminating the need for the application to call routines directly. For example, calls in the Script Track of a segment could periodically check the value of a variable set by the application, and then set the tempo of the performance in response.

An application can load and run multiple scripts at the same time. The names of variables and routines can be the same in different scripts; the application will keep them separate. One script can load another script and call into it.

Note Examples of scripts are included in the Sample Files provided with DirectMusic Producer.


Script Properties

The Properties Window shown in the following figure contains settings for a script component in the project tree.

Script Properties window

The window contains the following tabs:

  • Script Tab

    The Script tab contains the settings shown in the following table.

    Setting | Description
    Name | Name of the script as it appears in the project tree.
    Language | Language in which the script is written. Select a language from the drop-down list. For more information, see AudioVBScript Language.
    Load all content when script is loaded | If selected, all files referenced by the script are loaded when the script is loaded. See Embedding and Referencing Files in a Script.
    Download all segments when script is loaded | If selected, DLS and wave data for all segments is downloaded to the synthesizer when the script is loaded, making it unnecessary for the application to explicitly download the data.

  • Info Tab

    The Info tab contains generic descriptive information about the component.


Script Designer Window

When you create a new script or double-click the internal icon of a script file in the project tree, a window similar to the following figure is displayed.

Script Designer window

The window is divided into three panes:

  • Source

    Source code for routines. Edit the code in this pane.

  • Routines

    List of routines in the source code.

    To update the list and check the syntax of all routines, click the Refresh button. If there is a syntax error, the list is cleared. Use the Message Window to see syntax errors as well as run-time errors and the output of Trace statements.

    To run routines, select them and press CTRL+R; or click Call Routine(s) on the shortcut menu; or double-click a routine name. Multiple routines are called in the order in which they appear in the list. If a routine plays any content, you can click the Stop button in the Transport Controls to stop playback.

  • Variables

    Variables declared in the script. The list is automatically updated when you click an element of the window outside the Routines pane. To set the value of a variable for testing routines, click on the variable under the Value column; or select the variable name and press CTRL+E or click Set Variable on the shortcut menu. To reset variables to an uninitialized state, click the Reinitialize button.


Embedding and Referencing Files in a Script

The routines you create in a script can use other components in the project. For example, a routine can play a segment file.

Any component you use in a script must be placed into the Script Content folder of the script in the project tree, in either the Embed Runtime folder or the Reference Runtime folder. The Script Content folder is essentially a container. For more information, see Containers.

You can insert a component into the Embed Runtime or Reference Runtime folder of a script by dragging an open component from elsewhere in the project tree onto the folder icon.

The following figure shows a script file named Script2, with its Script Content folder opened to show the Embed Runtime and Reference Runtime folders, each containing a segment.

Script Content folder

Note that both segment icons are shortcuts. When a component is inserted in a script content folder, regardless of whether it is the Embed Runtime or Reference Runtime folder, the original component remains at its current position in the project tree and is not saved as part of the script design file. However, the contents of a component in the Embed Runtime folder are inserted into the script run-time file, ensuring that the component is available for use in the script without the need to distribute extra files.

You can rename the shortcut by clicking Change Content Identifier on the shortcut menu. In the script, refer to the content by the name of the shortcut, not the name of the original file.

Components in the Reference Runtime folder are not saved in the run-time script file. The component must be provided as a separate run-time file. The Reference Runtime folder is useful when a component is used by multiple scripts, because it reduces unnecessary duplication of the component in more than one file.

A component cannot be placed in both the Embed Runtime and the Reference Runtime folder. If it is embedded, there is no need to reference it.

Any component embedded or referenced in a script is available to an application that loads the script, and can be retrieved by name just as if a global variable of that name had been declared in the script.


AudioVBScript Language

Scripts can be written using any Microsoft ActiveX Scripting language, but DirectMusic Producer enables scripting in a special language called AudioVBScript. The advantage of using AudioVBScript is that it requires a very small run-time library, which is part of the DirectMusic system components.

AudioVBScript is a subset of Microsoft Visual Basic Scripting Edition. Any script in AudioVBScript can be run in the Visual Basic Scripting Edition environment as well.

AudioVBScript supports the following keywords. For information on how these keywords are used, see the documentation for Visual Basic Scripting Edition.

AudioVBScript keyword
sub
dim
if
then
end
elseif
else
set
call
not
mod
is
and
or
true
false
nothing

The true, false, and nothing keywords are special identifiers. They are treated as constants that represent the values that their names suggest.

Note Microsoft Visual Basic functions not listed in the table are not supported. For example, you cannot call Rnd, Date, Time, or any format conversion function.

AudioVBScript supports the operators shown in the following table.

AudioVBScript operator
(
)
, (comma)
' (apostrophe)
-
^
*
\
%
+
<
<=
>
>=
=
<>

Keywords and other identifiers, other than string literals, are not case-sensitive.

Identifiers—variable and subroutine names—can be any sequence of letters, digits, and underscores but cannot begin with a digit.

The following objects can be used in scripts:

  • Audiopath Object
  • AudiopathConfig Object
  • Performance Object
  • PlayingSegment Object
  • Segment Object


AudioVBScript Limitations

AudioVBScript has the following limitations:

  • Variables can only be integers, strings, or objects.
  • Arrays are not supported.
  • The Performance.Trace method takes only a string literal or string variable as a parameter.
  • Strings cannot be concatenated by using operators. For example, the following code raises an error in AudioVBScript:
    CurrentLevel = "Dungeon"
Trace "The current level is " + CurrentLevel

    Visual Basic Scripting Edition would print "The current level is Dungeon," but AudioVBScript raises a syntax error.

  • Visual Basic script code using Option Explicit will not work in AudioVBScript.
  • All Dim statements must occur before all Sub statements. For more information, see AudioVBScript Variables.
  • Single-line If/Then statements are not supported. Conditional statements must be followed by End If, as in the following example:
    Sub TestX
  If x > 1 then
    Segment1.play
  End If
End Sub


AudioVBScript Variables

Local variables can be used to temporarily store values that are only needed by the logic in that function. Such a variable is not accessible outside the function, and it is cleared each time the function is called. Each instance of a called function will have its own instance of local variables, independent of other instances.

Dim statements cannot occur inside a Sub. This does not mean that all variables in an AudioVBScript file must be globally declared. It only means that local variables cannot be explicitly allocated by using Dim. Local variables can, however, be automatically allocated.

The following code is not allowed:

dim x
sub UseLocal
  dim y
  y = x + 1
end sub

But the following is permissible:

dim x
sub UseLocal
  y = x + 1
end sub

Here, y is automatically created when used and released when the subroutine exits.

Local variables are guaranteed to have an initial value of zero. You can also set a local variable's value using a standard assignment, as shown in the following example:

dim x   ' Global variable.
sub AddSomeValues
  local1 = 10   ' Variables are created and initialized.
  local2 = 20
  x = local1 + local2
end sub

An object returned by a function cannot be directly dereferenced. The following is not allowed:

LoadSegment("song.sgt").Download

However, the following is permitted:

set seg = LoadSegment("song.sgt")
seg.Download


Calling into Another Script

The following example shows how a script can set a variable and call a routine in another script. The first script, called CarScript, declares the variable and defines the routine:

Dim CarNumber

Sub RunCar
  If CarNumber = 1 Then
    LittleEngineSound.Play
  Else
    BigEngineSound.Play
  End If
End Sub

The second script calls into CarScript, which is referenced in its Script Content folder, to play an appropriate sound, as follows:

Sub StartRace
  CarScript.CarNumber = 1
  CarScript.RunCar
End Sub


DirectMusic Scripting Reference

This section contains reference information for Microsoft DirectMusic using Active Scripting.

References are provided for the following objects:

  • Audiopath Object
  • AudiopathConfig Object
  • Performance Object
  • PlayingSegment Object
  • Segment Object


Audiopath Object

The Audiopath object represents a configuration of channels, ports, and buffers through which sound data is streamed. An audiopath is created in an application and passed to the script as an object variable. An audiopath can also be created using the AudiopathConfig.Create method. The script can then download and unload instrument data on that path and play segments on it by passing the Audiopath object as a parameter to the following methods:

  • Segment.DownloadSoundData
  • Segment.Play
  • Segment.UnloadSoundData

The Audiopath object has the following methods.

Method | Description
GetVolume | Retrieves the volume for all segments and songs playing through this audiopath.
SetVolume | Sets the volume for all segments and songs playing through this audiopath.


Audiopath.GetVolume

The GetVolume method retrieves the volume for all segments and songs playing through this audiopath.

iVolume = object.GetVolume()

Parts

object

Required. Object expression that resolves to an Audiopath Object.

Return Values

Returns an integer in the range from -9600 through 0.

Remarks

If Audiopath.SetVolume has been called, this method returns the new volume specified in that call, even if the new volume has not been reached because the duration has not elapsed.


Audiopath.SetVolume

The SetVolume method sets the volume for all segments and songs playing through this audiopath. The volume is an attenuation factor cumulative with volumes authored into the content as well as volumes applied by Performance.SetMasterVolume.

object.SetVolume iVolume, [iDuration]

Parts

object

Required. Object expression that resolves to an Audiopath Object.

iVolume

Required. Integer that specifies the attenuation of the volume, in hundredths of a dB. This value must be in the range from -9600 to 0. A value of zero specifies the base volume. A negative value indicates the amount by which the base volume is attenuated. The volume cannot be increased over the base level.

iDuration

Optional. Integer that specifies the duration, in milliseconds, over which the volume change occurs.

Remarks

This method should not be called while a previous volume change with duration is still in process.

The actual precision of volume changes is about 0.75 dB.

See Also

  • Audiopath.GetVolume


AudiopathConfig Object

The AudiopathConfig object represents an audiopath configuration. This object has the following methods.

Method | Description
Create | Creates an audiopath on which songs and segments can be played.
Load | Reads the audiopath configuration into memory, making it possible to use the configuration to create an audiopath.


AudiopathConfig.Create

The Create method creates an audiopath on which songs and segments can be played.

Set oAudiopath = object.Create()

Parts

object

Required. Object expression that resolves to an AudiopathConfig Object.

Return Values

Returns an Audiopath Object.

Remarks

Before this method can be called, the configuration must be loaded. Loading can be done either automatically or manually. For more information, see the Remarks for AudiopathConfig.Load.


AudiopathConfig.Load

The Load method reads the audiopath configuration into memory, making it possible to use the configuration to create an audiopath.

object.Load

Parts

object

Required. Object expression that resolves to an AudiopathConfig Object.

Remarks

This method has no effect if content is loaded automatically when the script is loaded, as specified by the script properties assigned in DirectMusic Producer. If content is not loaded automatically, none of the object's other methods are available until AudiopathConfig.Load has been called.

Loading occurs synchronously, blocking execution of the script until the segment is loaded.

The configuration is unloaded automatically when the application frees the script.


Performance Object

The Performance object manages music playback. Most applications have a single performance, but it is possible to have multiple performances, each with its own global parameters such as tempo and volume. The application can pass a Performance object to the script in an object variable. If the script calls a Performance method without an Object prefix, the default performance is assumed.

A Performance object has the following methods.

Method | Description
GetMasterGrooveLevel | Retrieves the current master groove level, which is a value added to all groove levels in the performance.
GetMasterTempo | Retrieves the current master tempo.
GetMasterTranspose | Retrieves the current master transposition.
GetMasterVolume | Retrieves the current master volume.
Rand | Returns a randomly generated integer.
SetMasterGrooveLevel | Sets a value to be added to all groove levels in the performance.
SetMasterTempo | Sets a scaling factor that is applied to the tempo.
SetMasterTranspose | Sets the current master transposition.
SetMasterVolume | Sets the master volume of the performance.
Trace | Sends a lyrics message that displays text in the DirectMusic Producer message window.


Performance.GetMasterGrooveLevel

The GetMasterGrooveLevel method retrieves the current master groove level, which is a value added to all groove levels in the performance. The resulting value is adjusted, if necessary, to fall within the range from 1 through 100.

iMasterGrooveLevel = [object.]GetMasterGrooveLevel()

Parts

object

Optional. Object expression that resolves to a Performance Object. If omitted, the default performance is used.

Return Values

Returns an integer in the range from -99 through 99.

See Also

  • Performance.SetMasterGrooveLevel


Performance.GetMasterTempo

The GetMasterTempo method retrieves the current master tempo.

iTempo = [object.]GetMasterTempo()

Parts

object

Optional. Object expression that resolves to a Performance Object. If omitted, the default performance is used.

Return Values

Returns an integer in the range from 1 to 10,000.

Remarks

The master tempo is a percentage that is applied to the tempo of the segment that is playing. By default it is 100. A value of 50 halves the tempo, and a value of 200 doubles it.

See Also

  • Performance.SetMasterTempo


Performance.GetMasterTranspose

The GetMasterTranspose method retrieves the current master transposition.

iTranspose = [object.]GetMasterTranspose()

Parts

object

Optional. Object expression that resolves to a Performance Object. If omitted, the default performance is used.

Return Values

Returns the number of semitones by which the notes in the performance are transposed, in the range from -32,768 to 32,767.

Remarks

The master transposition is applied to all notes, after any transposition within segments has been applied. Any notes that fall outside the range of MIDI values from 0 through 127 will not be heard.

See Also

  • Performance.SetMasterTranspose


Performance.GetMasterVolume

The GetMasterVolume method retrieves the current master volume.

iVolume = [object.]GetMasterVolume()

Parts

object

Optional. Object expression that resolves to a Performance Object. If omitted, the default performance is used.

Return Values

Returns the current master volume, in hundredths of a decibel.

Remarks

The master volume is an amplification or attenuation factor applied to the default volume of the entire performance.

See Also

  • Performance.SetMasterVolume


Performance.Rand

The Rand method returns a randomly generated integer.

iChoice = [object].Rand(iNumChoices)

Parts

object

Optional. Object expression that resolves to a Performance Object. If omitted, the default performance is used.

iNumChoices

Allowed range of returned number. Must be at least 1, and cannot be greater than 32,767.

Return Values

Returns an integer in the range from 1 to iNumChoices.


Performance.SetMasterGrooveLevel

The SetMasterGrooveLevel method sets a value to be added to all groove levels in the performance.

[object.]SetMasterGrooveLevel iLevel

Parts

object

Optional. Object expression that resolves to a Performance Object. If omitted, the default performance is used.

iLevel

Required. Integer that specifies the value to add to the groove level, in the range from –99 through 99.

Remarks

The adjusted groove level is always in the range from 1 through 100.

See Also

  • Performance.GetMasterGrooveLevel


Performance.SetMasterTempo

The SetMasterTempo method sets a scaling factor that is applied to the tempo.

[object.]SetMasterTempo fTempo

Parts

object

Optional. Object expression that resolves to a Performance Object. If omitted, the default performance is used.

fTempo

Required. Desired master tempo, in the range from 1 through 10,000.

Remarks

The master tempo is a percentage that is applied to the tempo of the segment that is playing. By default it is 100. A value of 50 halves the tempo, and a value of 200 doubles it.

See Also

  • Performance.GetMasterTempo


Performance.SetMasterTranspose

The SetMasterTranspose method sets the current master transposition.

[object.]SetMasterTranspose iTranspose

Parts

object

Optional. Object expression that resolves to a Performance Object. If omitted, the default performance is used.

iTranspose

Required. Integer that specifies the number of semitones by which the notes in the performance are transposed, in the range from -32,768 to 32,767.

Remarks

The master transposition is applied to all notes, after any transposition within segments has been applied. Any notes that fall outside the range of MIDI values from 0 through 127 will not be heard.

See Also

  • Performance.GetMasterTranspose


Performance.SetMasterVolume

The SetMasterVolume method sets the master volume of the performance. The master volume is an attenuation factor applied to the volume of the entire performance, relative to the default volume of the segment.

[object.]SetMasterVolume iVolume, [iDuration]

Parts

object

Optional. Object expression that resolves to a Performance Object. If omitted, the default performance is used.

iVolume

Required. Integer that specifies the attenuation factor, in hundredths of a dB, to apply to all sounds in the performance. This value must be in the range from -9600 to 0. The actual precision of volume changes is about 75 hundredths of a dB.

iDuration

Optional. Integer that specifies the duration, in milliseconds, over which the volume change occurs.

Remarks

This method should not be called while a previous master volume change with duration is still in process.

Calling SetMasterVolume with a value of 0 dB will make most content louder; 0 dB is normally meant to have no effect, but instead it causes all note velocities to increase to 127. Thus 0 dB causes everything to play at maximum volume, and from this point negative values decrease the volume until -9600, which is equal to silence.

Volume changes using a duration do not always occur smoothly, and the precision of volume adjustments isn't precise down to hundredths of a dB as indicated in the interface.

See Also

  • Performance.GetMasterVolume


Performance.Trace

The Trace method sends a lyrics message that displays text in the DirectMusic Producer message window. This method is useful for debugging and testing the script. Applications can also trap the messages by using tools.

[object.]Trace sOutput

Parts

object

Optional. Object expression that resolves to a Performance Object. If omitted, the default performance is used.

sOutput

Required. Text to output. In AudioVBScript, this must be a single string. In Visual Basic Scripting Edition, it can be a numerical value or a concatenation.

Remarks

This method is implemented by sending a lyrics message. These messages are typically ignored outside of DirectMusic Producer, but an application could insert a tool into the performance toolgraph to capture the strings.


PlayingSegment Object

The PlayingSegment object represents an instance of a segment or song that has been played, and enables the application to retrieve information about it, set its volume, and stop it.

This object is obtained by using the Segment.Play method.

A PlayingSegment object has the following methods.

Method | Description
IsPlaying | Ascertains whether the instance of a segment or song is playing.
Stop | Stops this instance of the segment.


PlayingSegment.IsPlaying

The IsPlaying method ascertains whether the instance of a segment or song is playing.

bPlaying = object.IsPlaying()

Parts

object

Required. Object expression that resolves to a PlayingSegment Object.

Return Values

Returns true if the segment instance is playing, or false if the segment instance has not yet started, has finished, or has been stopped.

Remarks

Because of latency or delayed start, this method can return false even though Segment.Play has been called.


PlayingSegment.Stop

The Stop method stops this instance of the segment.

object.Stop [iFlags]

Parts

object

Required. Object expression that resolves to a PlayingSegment Object.

iFlags

Optional. Integer value specifying the stop point in relation to the currently playing primary segment. If no flag is specified, playback stops at the boundary authored in the segment. In addition, the NoCutoff flag can be combined with any stop point. The following flags are defined.

Flag | Description
AtGrid | Stop at the next grid.
AtBeat | Stop at the next beat.
AtMeasure | Stop at the next measure.
AtMarker | Stop at the next marker.
AtImmediate | Stop immediately.
NoCutoff | Do not invalidate notes currently playing.

Remarks

Calling this method on a stopped segment has no effect. Calling it on a segment that is cued to play causes the segment not to start.

See Also

  • Segment.Stop


Segment Object

The Segment object represents a piece of music or a template. This object has the following methods.

Method | Description
DownloadSoundData | Downloads instruments or wave data used by the segment.
Load | Reads the segment into memory from a file or resource and makes it available for playback.
Play | Plays the segment.
Recompose | Recomposes the chords of the segment, using the current chord map.
Stop | Stops all instances of the segment that are playing.
UnloadSoundData | Unloads instruments or wave data used by the segment.


Segment.DownloadSoundData

The DownloadSoundData method downloads instruments or wave data used by the segment. Sound data must be downloaded before the segment can be played.

object.DownloadSoundData [oAudiopath]

Parts

object

Required. Object expression that resolves to a Segment Object.

oAudiopath

Optional. Object expression that resolves to an Audiopath Object representing the destination for the segment's sound data. If this parameter is omitted, the default audiopath for the segment is used.

Remarks

Sound data must be downloaded to the audiopath on which the segment is going to be played. Otherwise, performance channels remapped by the audiopath will not match up when the segment is played, causing parts not to be heard or to play with the wrong instruments.

Sound data is automatically loaded and unloaded if Load all content when script is loaded is set in the Script Properties.

Scripts should call Segment.UnloadSoundData for each call to DownloadSoundData.


Segment.Load

The Load method reads the segment into memory from a file or resource and makes it available for playback.

object.Load

Parts

object

Required. Object expression that resolves to a Segment Object.

Remarks

This method has no effect if content is loaded automatically when the script is loaded, as specified by the script properties assigned in DirectMusic Producer. If content is not loaded automatically, none of the segment's other methods are available until Segment.Load has been called.

Loading occurs synchronously, blocking execution of the script until the segment is loaded.

The segment is unloaded automatically when the application frees the script.


Segment.Play

The Play method plays the segment. This method can be called using two forms:

  • As a sub procedure with no return values:
    object.Play [iFlags], [oAudiopath], [oTransitionSegment], [oFromPlayingSegment]
  • As a function that returns a value:
    Set oPlayingSegment = object.Play([iFlags], [oAudiopath], [oTransitionSegment], [oFromPlayingSegment])

Parts

object

Required. Object expression that resolves to a Segment Object.

iFlags

Optional. Flags that specify how the segment is played. Multiple flags are set by adding them together. Flags fall into four groups, as shown in the following tables.

Basic Control Flag | Description
IsControl | Play as a controlling segment. See Controlling Segments.
IsSecondary | Play as a secondary segment. See Primary and Secondary Segments.

Note If IsSecondary is not specified, the segment is played as the primary segment. If a script routine in a primary segment calls Segment.Play without IsSecondary, playback transitions to the new primary segment, and playback of the source segment containing the script is halted.

Alignment Flag | Description
AlignToBar | Align the start point of the segment to the most recent measure boundary in the current primary segment.
AlignToBeat | Align the start point of the segment to the most recent beat boundary in the current primary segment.
AlignToSegment | Align the start point of the segment to the start of the current primary segment.

Note Specify only one alignment flag. If none is specified, the start of the segment is not aligned with a past event. For more information, see Align Options.

Playback Time Flag | Description
AtBeat | Play at next beat.
AtFinish | Not available with IsSecondary or IsControl. Play when the currently playing primary segment, if any, finishes. If no primary segment is playing, play starts immediately. If multiple primary segments are played with AtFinish, they are cued to play one after another in the order in which they were played.
AtGrid | Play at next grid.
AtImmediate | Play immediately.
AtMarker | Play at next marker or switch point.
AtMeasure | Play at next measure.

Note Specify only one playback time flag. If none is specified, play starts according to the performance boundary authored in the segment. If no primary segment is currently playing, the new segment starts immediately. For more information, see Boundaries and Segment Alignment.

Transition Flag | Description
PlayFill | Play a Fill transition between the currently playing segment and the new segment. This flag cannot be combined with any other transition flag except PlayModulate.
PlayIntro | Play an Intro transition between the currently playing segment and the new segment. This flag cannot be combined with any other transition flag except PlayModulate.
PlayBreak | Play a Break transition between the currently playing segment and the new segment. This flag cannot be combined with any other transition flag except PlayModulate.
PlayEnd | Play an End transition between the currently playing segment and the new segment. This flag cannot be combined with any other transition flag except PlayModulate.
PlayEndAndIntro | Play an End transition from the existing segment and an Intro transition from the new segment between the currently playing segment and the new segment. This flag cannot be combined with any other transition flag except PlayModulate.
PlayModulate | Create a new modulating chord progression during the transition. This flag can be used with any of the other transition flags. If no other transition flag is set, this flag is ignored.

Note The flags in the preceding table are available only with primary segments, and negate the effects of the IsSecondary and IsControl flags, causing playback of a primary segment instead. If no transition flag is specified or the segment doesn't contain the specified transition, no transition is played. The entire transition is played even if it is several measures long.

For more information, see Transitions.

Other Flag | Description
NoCutoff | Start the new segment, but don't prematurely cut off any held notes from the previous segment. Not available if transition flags are set.

oAudiopath

Optional. Audiopath to use for playback of this segment. If this parameter is omitted, an audiopath embedded in the segment is used. If there is no embedded audiopath, the segment plays on the audiopath of the default performance.

oTransitionSegment

Optional. Segment Object to be played as a transition to the new segment. Not valid if transition flags are set.

oFromPlayingSegment

Optional. PlayingSegment Object to replace. This parameter is used to stop a specific secondary PlayingSegment when this segment begins playing. Cannot be used with transition flags, but can be used when oTransitionSegment is supplied.

Return Values

Returns a PlayingSegment Object that represents this instance of the segment.

See Also

  • Boundaries and Segment Alignment


Segment.Recompose

The Recompose method recomposes the chords of the segment, using the current chord map.

object.Recompose

Parts

object

Required. Object expression that resolves to a Segment Object.


Segment.Stop

The Stop method stops all instances of the segment that are playing.

object.Stop [iFlags]

Parts

object

Required. Object expression that resolves to a Segment Object.

iFlags

Optional. Integer that specifies flags. Can include one of the playback time flags, which control when the segment stops in relation to boundaries of the currently playing primary segment. If no playback time flag is specified, then playback will stop according to the performance boundary authored in the segment. Can also include a transition flag. Multiple flags are combined by adding them together.

Playback Time Flag | Description
AtGrid | Segment ends at the next grid.
AtBeat | Segment ends at the next beat.
AtMeasure | Segment ends at the next measure.
AtImmediate | Segment ends immediately.

Transition Flag | Description
PlayEnd | Play an End transition. Only valid for a primary segment. If the segment does not contain such a transition, no transition is played.

See Also

  • PlayingSegment.Stop


Segment.UnloadSoundData

The UnloadSoundData method unloads instruments or wave data used by the segment. The data is released from system memory. All instruments and waves using that data fall silent.

object.UnloadSoundData [oAudiopath]

Parts

object

Required. Object expression that resolves to a Segment Object.

oAudiopath

Optional. Audiopath Object that represents the location of the segment's sound data. This must be the same path that was passed to Segment.DownloadSoundData. If this parameter is omitted, the default audiopath for the segment is used.

Remarks

Scripts should call UnloadSoundData for each call to Segment.DownloadSoundData. The data is not removed until it has been unloaded as many times as it was downloaded. There is no harm in calling this method more often than DownloadSoundData was called.

Sound data is automatically loaded and unloaded if Load all content when script is loaded is set in the Script Properties.


Delivering Content

Microsoft DirectMusic Producer design-time files are slightly different from the files you deliver to application developers. A DirectMusic run-time file is more streamlined than its corresponding design-time file, because it does not contain information specific to the editing environment.

Copyright and other information is included in run-time files. Enter this information in the Info Tab of the Properties Window for each component.

You have a great deal of latitude in deciding which run-time components to deliver. For most purposes, you need to supply only segment files along with any external files referenced by them, such as wave files. However, if the files are designed for an application that performs sophisticated tasks such as segment composition or recomposition of chord tracks, you can deliver other components. For more information, see the following topics:

  • Scenarios
  • Variability
  • Components and Design Modules

The following table shows the file extensions of the authoring-mode and run-time file types.

Component | Authoring-mode | Run-time
Audiopath | .aup | .aud
Band | .bnp | .bnd
Chordmap | .cdp | .cdm
Container | .cop | .con
DLS collection | .dlp | .dls
Script | .spp | .spt
Segment | .sgp | .sgt
Style | .stp | .sty
Toolgraph | .tgp | .tgr
Wave | .wvp | .wav

Audiopaths, bands, toolgraphs, and containers are usually embedded in segments and don't need to be distributed as separate files. However, you can distribute these as separate components if you wish.

Any tools that are part of a toolgraph must be distributed as DLLs and installed on the user's system as part of the application setup. The same is true for DMOs other than the standard effects that are installed as part of DirectMusic.

DLS collections are never embedded in other components and must be distributed separately, or in Containers.

Project files are used internally only by DirectMusic Producer and are not distributed.


To convert a file to a DirectMusic run-time file

  1. Open a component so it is active in the editing window.
  2. On the File menu, choose Runtime Save As.
  3. In the Runtime Save As window, choose a directory on your computer where the run-time file will be saved.
  4. Click the New Folder button to create a folder where the run-time file will be saved.
  5. Click Open and select whether to save the run-time files to the default folder or to a new folder. A run-time file is then saved with a new file extension.


To convert all files in a project to DirectMusic run-time files

  1. In the project tree, click a project to select it.
  2. On the File menu, choose Runtime Save All Files. All components in the selected project are saved as run-time files in a directory inside the project directory called Runtime Files. Each run-time file is saved using the exact name of the original file.


Embedded and Referenced Components

Any component that appears within another component in the project tree is embedded in that component. It is saved in the run-time file for the component and doesn't need to be distributed separately. For example, if you create an audiopath component and then copy or move it to a segment by dragging in the project tree, that audiopath is now part of the segment, and you don't need to save or distribute the run-time audiopath (.aud) file. Audiopaths, bands, and containers are usually embedded in segments and don't need to be distributed as separate files.

Note Files in the Reference Runtime folder of a script are exceptions to the rule that components are embedded when they appear within other components in the project tree. See Embedding and Referencing Files in a Script.

Bands in the Band Track are saved with the segment. The following tracks, however, contain only references to components, and the components themselves must be distributed separately:

  • Chordmap Track
  • Script Track
  • Style Track
  • Segment Trigger Track
  • Wave Track

For example, you can drag a wave from the project tree onto the Wave Track in Segment Designer. Although the wave now appears graphically in the editing window, it is not shown as part of the segment in the project tree, and it is not saved in the run-time segment file except as a reference to the original wave file. You must distribute the run-time wave (.wav) file along with the segment (.sgt) file, or else include the wave in a container within the segment.

DLS collections are also referenced rather than embedded. It's not enough to distribute a band as part of a segment file; you also need to distribute the run-time DLS collection (.dls) file containing the instruments referenced by that band. This is not necessary, however, if the band uses only the standard instruments in the Gm.dls collection, which is available on every system that has DirectMusic installed.


Containers

A container packages multiple components into a single file to provide a delivery vehicle for related content. For example, Container1.con can contain all of the files needed for Scene 1 of a game while Container2.con can contain all files needed for Scene 2.

Containers also exist within segment files. If desired, all of the files needed to play a specific segment can be placed into that segment's internal container, so that the run-time segment file will contain all of the files needed to play the segment. This makes containers a good solution for applications such as media players, where the user selects a single file for playback.

The Script Content folder of a script component is also a container. For more information, see Embedding and Referencing Files in a Script.

Only run-time containers (.con files) actually embed other files. Authoring-mode containers (.cop files) save only links to the various files that will be embedded during a run-time save. When you save a run-time container, a full copy of each file located in the Embed Runtime folder is included in the saved file.

Containers have a Reference Runtime folder as well as an Embed Runtime folder. You can drop files into the Reference Runtime folder if you want to override standard behavior and save only a link to a file in the run-time container. Referenced files are important because they allow a number of containers to include the same files without needless duplication of data. You might, for example, want to embed all your DLS collections into a single container file and then place references to specific DLS collections in other containers. In this way you avoid wasting storage space by embedding the same multimegabyte collection in several containers.

The following illustration shows a container in the project tree. The Embed Runtime folder contains references to an audiopath, a band, and a segment that are saved with the runtime file. The Reference Runtime folder contains a reference to a DLS collection that must be distributed separately.

Add references to the Embed Runtime or Reference Runtime folder of a container by dragging the icon of an open file to the folder, or by clicking Add/Remove Files in the Container Properties window.

Note If the folder already contains a reference to the file you are attempting to insert, you cannot insert a second reference.

On the shortcut menu for a reference in a container, click Locate in Tree to select the associated file in the project tree.


Container Properties

The Properties Window for a container in the project tree has two tabs:

  • Container Tab

    The Container tab contains the elements shown in the following table.

    Element Description
    Name text box

            Name of the container as it appears in the project tree.

    Add/Remove Files button

            Click to open the Add/Remove Container Files Dialog Box. This dialog box provides an alternative to using the project tree for managing the references in a container.

  • Info Tab

    The Info tab contains generic descriptive information about the component.


Add/Remove Container Files Dialog Box

The following dialog box is displayed when you click the Add/Remove Files button in the Container Properties window.

Add Remove Container Files dialog box

The dialog box contains the following elements:

  • Available Files in Project

    List of files in the project that have not yet been added to the container. Select one or more files to add to the Embed Runtime or Reference Runtime list.

  • Embed Runtime

    List of files to be referenced in the Embed Runtime folder in the project tree. Select one or more to move to the Available Files in Project list.

  • Reference Runtime

    List of files to be referenced in the Reference Runtime folder in the project tree. Select one or more to move to the Available Files in Project list.

  • Add/Remove

    Click these buttons to move selected files between the Available Files in Project list and one of the other lists.

  • Reset

    Click this button to reset the lists to their state when the dialog box was opened.

  • Sort By

    Select a sort order for the lists based on Name, Type, or Size.


Container Reference Properties

The Properties Window for a reference in the Embed Runtime or Reference Runtime folder of a container in the project tree has the following tabs:

  • Design

    Contains read-only information about the referenced design-time file.

  • Runtime

    Contains read-only information about the referenced run-time file.

  • Cache

    Contains one setting, Keep cached after release of container. If selected, the component remains in active memory after the container object has been released by an application. If not selected, the component remains available but might have to be reloaded from disk when used.


Using Content on Web Pages

Using HTML+TIME, you can play DirectMusic Producer segments on Web pages and synchronize sounds with other events. The sounds can be heard by a user through Internet Explorer 5.5 or later, provided DirectX 6.1 or later has been installed or is part of the operating system.

All files needed by the DirectMusic segment, such as DLS collections and styles, must be in the same virtual directory as the segment. Files are cached on the user's machine in the temporary internet files directory, making them available offline and reducing redundant downloading. If you are using a DLS collections licensed from a third party, you should ensure that this is acceptable use.

For more information about using HTML+TIME to play DirectMusic Producer segments, see MSDN Online Web Workshop.


Tips

This section contains the following topics:

  • Keyboard Shortcuts
  • Drag-and-Drop


Keyboard Shortcuts

Following is a list of keyboard shortcuts you can use in Microsoft DirectMusic Producer to help speed your work.

Note Most menus also have specific accelerators (keys appear underlined in the menu).

General

F1 | Help.
F11 | Properties.
CTRL+F11 | Cycle focus through project tree/Editor/Properties.
SHIFT+F11 | Show/hide project tree.
CTRL+N | New file(s).
CTRL+O | Open project.
CTRL+I | Insert files into project.
CTRL+S | Save file (Editor must be open).
CTRL+X | Cut.
CTRL+C | Copy.
CTRL+V | Paste.
CTRL+A | Select all.
CTRL+Z | Undo.
CTRL+Y | Redo.
ENTER | OK.
CTRL+TAB | Cycle through open windows.

Transport

SPACEBAR | Play/stop from cursor (segments, waves, or DLS regions).
ALT+< | Play/stop from cursor.
ALT+> | Play from start (stop at boundary).
ALT+? | Toggle recording.
ALT+" | Transition.
CTRL+ALT+1–0, A–Z | Play secondary segment toolbar.

Project Tree

UP ARROW/DOWN ARROW | Navigate through files/expanded nodes.
HOME | To top of tree.
END | To bottom of tree.
ENTER | Open file/Editor.

DLS Designer

CTRL+drag left to right | Define new region.
CTRL+drag (move cursor active) | Copy/paste region.
LEFT ARROW/RIGHT ARROW | Fine-tune sliders.

Segment Designer

CTRL+INS | Add track.
CTRL+DEL | Delete track.
INS | Add objects to track.
DEL | Delete objects in track.

Both Segment Designer and Piano Roll Editors

LEFT ARROW/RIGHT ARROW | Cursor navigation (based on snap-to setting).
SHIFT+Click | Select area.
CTRL+Click | Select individual objects.
CTRL+Drag | Copy.
HOME | Place cursor at start.
END | Place cursor at end.
CTRL+LEFT ARROW/RIGHT ARROW | Navigate bar forward and backward.
I/O | Horizontal zoom in and out.
CTRL+B | Snap to bar.
CTRL+T | Snap to beat.
CTRL+G | Snap to grid.
CTRL+E | Snap to none.

Piano Roll Editors (Pattern, Sequence and Pattern Tracks)

All arrow keys: | Cursor control.
INS | Insert note at cursor.
CTRL+ drag | Insert note and extend length
PAGE UP/PAGE DOWN | Scroll octaves.
H | Toggle hybrid view.
CTRL+Q | Quantize.
A/Z | Vertical zoom in and out.

In Step Record Mode

RIGHT ARROW | Move cursor forward (insert rest).
RIGHT ARROW (while holding notes) | Extend length of inserted notes.


Drag-and-Drop

You can use the drag-and-drop feature to work with Microsoft DirectMusic Producer components. The simplest example of this is dragging part of a component to share with another component of the same type, such as dragging a pattern from one style to another, or dragging a chord from one chordmap to another.

More advanced examples of using the drag-and-drop feature involve placing entire components within other components, such as dragging a style from the project tree to the style track of a segment, or dragging a band from within a style to the band track of a segment.

In most cases, dragging an item from one place to another in the DirectMusic Producer window creates a copy of the item, leaving the original intact. If the original is not left in place, you can hold the CTRL key and drag the item to create a copy in the new location and leave the original item intact. You can use this method throughout DirectMusic Producer to duplicate an item or group of items.

Important Do not set a component in one project to refer to a component in a different project. This can be a risk to the data in your files.

Following are some examples of time-saving, drag-and-drop actions:

  • Drag an object beyond the left, right, upper, or lower edge of the project tree or an editing window to scroll the window and display hidden regions.
  • Drag a chord from a chordmap to a segment, to another chordmap, or to another measure in the original chordmap.
  • Drag a band from the project tree to the band strip of a style or a segment.
  • Drag a band from the Bands folder of a style onto the icon of a motif in the project tree, or drag a band from a motif onto the icon of a style.
  • Open a style using the Style Designer and drag a band from the Bands list to the icon of another style in the project tree.
  • Drag a groove or embellishment marker from the groove track of one segment to another.
  • Drag a pattern or motif from one style to another, or press CRTL and drag the pattern or motif within the same style to create a copy with a new name.
  • Drag a pattern in the project tree from the pattern folder to the motif folder of a style.
  • Drag selected notes in a pattern or a sequence to move them, or press CTRL and drag the notes to place a copy on a different beat or measure.
  • Drag selected chords in the Chord Path window of a chordmap to move them, or press CTRL and drag the chords to place a copy on a different beat or position in the Chord Path window.

When you click an item to drag it, a faint dragging icon appears; this icon moves with the cursor. The icon usually appears as a semitransparent rectangle with an icon or other symbol that represents the item you are dragging. For example, the following illustration shows the dragging cursor with the icon of a band being dragged in the project tree.

Dragging a band

As you drag items around, you will recognize the appearance of the dragging icon as confirmation that you are moving the item you want to move. When you drag an item in the project tree, and hold the dragging cursor over another component, the internal icon and folders contained in the subcomponent are displayed in the tree.

You will also occasionally see a small plus (+) sign in the dragging icon rectangle. This indicates that a copy of the item will be made if you drop the item in the location beneath the cursor. For example, you might intend to drag a band from a style to a segment. Without querying you, DirectMusic Producer automatically creates a copy of the band and places it in the segment, exactly as if you had pressed CTRL while dragging the band.

If the icon or symbol for the item you are dragging changes to include a "not allowed" symbol, then the cursor is pointing to a destination that cannot accept the dragged item. For example, the following illustration shows a band being dragged onto the icon of a chordmap. A chordmap cannot contain a band, and so the icon of the band has a "not allowed" symbol over it.

Drop not allowed


To select an item and drag it

  1. Click an item in the project tree or editing window to select it.
  2. Click the item again, holding down the mouse button.
  3. Drag the item to the desired location. As you drag, a circle with a line through it appears over the cursor, indicating the cursor is not pointing to a location that can accept the item.
  4. Release the button when the cursor no longer shows a circle with a line.


Accessibility for people with disabilities

Microsoft is committed to making its products and services easier for everyone to use. The following topics provide information about the features, products, and services that make Microsoft Windows and Windows NT more accessible for people with disabilities:

  • Accessibility of Microsoft Windows
  • Customizing Microsoft products for people with disabilities
  • Microsoft documentation in alternative formats
  • Accessibility aids for Windows
  • Customer service for people who are deaf or hard-of-hearing
  • Getting more accessibility information

Note The information in this section applies only to users who license Microsoft products in the United States. If you obtained this product outside the United States, your package contains a subsidiary information card listing Microsoft support services telephone numbers and addresses. You can contact your subsidiary to find out whether the type of products and services described in this section are available in your area. Accessibility is available in other select languages, including Japanese and French. For more information, see the Microsoft Web site


Accessibility of Microsoft Windows

Many accessibility features have been built right into Microsoft Windows, starting with the introduction of Windows 95. These features are useful for individuals who have difficulty typing or using a mouse, are blind or have low vision, or who are deaf or hard-of-hearing. The features can be installed during setup. Learn more about the various accessibility features of Windows 2000, Windows Millennium, Windows 98, and Windows 95 at the Microsoft Web site.


Customizing Microsoft products for people with disabilities

Accessibility features have been built into Windows and Windows NT since the introduction of Windows 95. These features are useful for individuals who have difficulty typing or using a mouse, are blind or have low vision, or who are deaf or hard-of-hearing. The features can be installed during setup, or you can add them later from your Windows installation disks.

  • Some of the accessibility features built into Windows and Windows NT can be added to earlier versions of those products, and to MS-DOS, through Access Pack files. You can download these files from the Microsoft Web site.
  • Dvorak keyboard layouts make the most frequently typed characters on a keyboard more accessible if you have difficulty using the standard QWERTY layout. There are three Dvorak layouts: one if you are a two-handed user, one if you type with your left hand only, and one if you type with your right hand only. You do not need to purchase any special equipment to use these features. You can download the Dvorak layouts from the Microsoft Web site.
  • In Windows 98 and later versions of Windows, the majority of accessibility settings can be set through the Accessibility Wizard or Control Panel. The Accessibility Wizard presents features sorted by disability, making it easy to customize Windows to each individual’s needs. The Accessibility Wizard also enables you to save your settings to a file that can be used on another computer.


Step by Step Guides

Microsoft offers a series of step-by-step guides that introduces you to some of the most commonly used accessibility features and shows you how to use them to customize your computer.

The guides provide detailed procedures on how to accomplish the customization, generally by selecting options or changing settings. This information is presented in a side-by-side format so that you can see at a glance how to use the mouse, the keyboard, or a combination of both.

Visit the Microsoft Web site to find Step-by-Step Guides for the following products:

  • Microsoft Windows Me
  • Microsoft Windows 2000
  • Microsoft Windows 98
  • Microsoft Internet Explorer 5
  • Microsoft Word 2000
  • Microsoft Outlook 2000
  • Microsoft Help Menus

Accessibility features are also documented in the Microsoft Windows 95 Resource Kit, the Microsoft Windows 98 Resource Kit, the Microsoft Windows NT Resource Kit, and the Windows 2000 Resource Kit. For more information about installing and using these features, look up “accessibility” in the Windows Help Index.


Microsoft documentation in alternative formats

In addition to the standard forms of documentation, many Microsoft products are available in other formats to make them more accessible. If you have difficulty reading or handling printed materials, you can obtain the documentation for many Microsoft products in other, more accessible formats. You can download many of these books from the Microsoft Web site.

Order additional Microsoft product documentation in accessible formats

You can obtain additional Microsoft publications from Recording for the Blind & Dyslexic, Inc. These documents are distributed to registered, eligible members of their distribution service on audiocassettes or on floppy disks. The collection contains more than 80,000 titles, including Microsoft product documentation and books from Microsoft Press.

For information about eligibility and availability of Microsoft product documentation and books from Microsoft Press, contact:

Recording for the Blind & Dyslexic, Inc.
20 Roszel Road
Princeton, NJ 08540

Phone from within the United States: (800) 221-4792
Phone from outside the United States and Canada: (609) 452-0606
Fax: (609) 987-8116

Recording for the Blind & Dyslexic Web site

Web addresses can change, so you might be unable to connect to the Web site or sites mentioned here.


Accessibility aids for Windows

A wide variety of accessibility aids, or assistive technology products, are available to make computers easier to use for people with disabilities.

Microsoft provides a searchable catalog of accessibility aids that run on Microsoft Windows operating systems at the Microsoft Web site.

Among the different types of products available for the MS-DOS, Windows, and Windows NT operating systems are:

  • Programs that enlarge the information displayed or alter the color of information on the screen for people with visual impairments.
  • Programs that describe information on the screen in Braille or synthesized speech for people who are blind or have difficulty reading.
  • Hardware and software utilities that modify the behavior of the mouse and keyboard.
  • Programs that enable people to type by using a mouse or their voice.
  • Word or phrase prediction software that allow users to type more quickly and with fewer keystrokes.
  • Alternative input devices, such as single switch or puff-and-sip devices, for people who cannot use a mouse or a keyboard.


Customer service for people who are deaf or hard-of-hearing

If you are deaf or hard-of-hearing, complete access to Microsoft product and customer services is available through a text telephone (TTY/TDD) service.

Customer service

You can contact Microsoft Sales Information Center on a text telephone by dialing (800) 892-5234 between 6:30 AM and 5:30 PM Pacific time, Monday through Friday, excluding holidays.

Technical assistance

For technical assistance in the United States, you can contact Microsoft Product Support Services on a text telephone at (800) 892-5234 between 6:00 AM and 6:00 PM Pacific time, Monday through Friday, excluding holidays. In Canada, dial (905) 568-9641 between 8:00 AM and 8:00 PM Eastern time, Monday through Friday, excluding holidays. Microsoft support services are subject to the prices, terms, and conditions in place at the time the service is used.


Getting more accessibility information

In addition to the features and resources already described in this section, other products, services, and resources for people with disabilities are available from Microsoft.

Microsoft

The Accessibility page at the Microsoft Web site provides information about accessible technology to help improve the lives of people with disabilities by making computers a positive force in employment, education, and recreation. The information on this site benefits people with disabilities and their friends and family members, people in outreach organizations, educators, and advocates.

You can find additional information about accessible technology by following these links: Accessibility and Microsoft, News and Events, Products and Aids, Training, and Developing Technology.


Legal Notice banner art

Legal Notice

Information in this document, including URL and other Internet Web site references, is subject to change without notice. Unless otherwise noted, the example companies, organizations, products, people and events depicted herein are fictitious, and no association with any real company, organization, product, person or event is intended or should be inferred. Complying with all applicable copyright laws is the responsibility of the user. Without limiting the rights under copyright, no part of this document may be reproduced, stored in or introduced into a retrieval system, or transmitted in any form or by any means (electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without the express written permission of Microsoft Corporation.

Microsoft may have patents, patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. Except as expressly provided in any written license agreement from Microsoft, the furnishing of this document does not give you any license to these patents, trademarks, copyrights, or other intellectual property.

© 2000-2001 Microsoft Corporation. All rights reserved.

Microsoft, MS-DOS, Windows, Windows Media, Windows NT, ActiveSync, ActiveX, Direct3D, DirectDraw, DirectInput, DirectMusic, DirectPlay, DirectShow, DirectSound, DirectX, FrontPage, JScript, Microsoft Press, MSN, NetShow, Outlook, PowerPoint, Visual Basic, Visual C++, Visual InterDev, Visual J++, Visual Studio, WebTV, Win32, and Win32s are either registered trademarks or trademarks of Microsoft Corporation in the U.S.A. and/or other countries.

The names of actual companies and products mentioned herein may be the trademarks of their respective owners.

Note: Manufacturers of telecommunications devices implementing this API must ensure compliance with section 255 of the telecommunications act of 1996.